本章会从 R 语言中最基本的数据类型开始介绍,在此之后就可以开始 R 语言实践了。对社交网络分析而言,我们在处理字符串上所花费的时间要远远大于处理数字的时间,因此本章还会介绍常用的字符串处理操作。

变量

R 语言中基本的数据类型包括:

  1. 整型(integer):整数,如 100
  2. 浮点型(double):小数,如 3.14
  3. 字符串型(character):R 语言中的字符串可以使用 " 或者 ' 定义,如 "abc"'abc'
  4. 逻辑型(logical):其他编程语言中常称为布尔型,在 R 语言中使用严格区分大小写的 TRUEFALSE 表示,或者使用缩写 TF

提示

R 语言中还存在数值型 numeric,可以看作整型和浮点型的并集。

变量就是对数据类型的引用,比如有一个整型值 100,想在程序中使用它并用 a 来表示,将 100 赋值给 a 后(a <- 100),a 就称之为变量。R 语言对变量的定义并不像强类型的语言一样需要在定义变量时声明变量的数据类型。当进行赋值操作时,就定义了一个新的变量。下面这段程序就是声明了一个变量 a,并且将 100 赋值给了变量 a,这三行代码的操作是等价的:

a <- 100
a = 100
100 -> a

在 R 语言中标准的赋值符号为 <-,这其中包含两个字符 <-。当然也可以使用 = 进行代替。从上面的代码也可以观察到,赋值符号 <- 是有方向性的,指向被赋值的对象。

变量的名称不是随意的,一个有效的变量名由字母开头,后面跟上任意数量的字母,数字以及下划线。下面是一些合法的变量名:aa1a_ba.b。下面是一些非法的变量名称:11a_a。当然,也不要使用关键字作为变量名,关键字是用于描述 R 语言的语法的。

提示

下面给出一些特殊的运算符:

运算符 描述 示例 输出
^ 乘方 2^3 8
%% 求余 3 %% 2 1
%/% 整除 5 %/% 2 2

字符串

字符串的创建

R 语言中的字符串既可以使用双引号 " 定义,也可以使用单引号 ' 定义。但是为什么要使用两种引号定义字符串?

> '这是包含"双引号"的字符串'
[1] "这是包含\"双引号\"的字符串" > "这是包含'单引号'的字符串"
[1] "这是包含'单引号'的字符串"

这样做的好处是可以在不转义引号的情况下,创建本身就包含引号的字符串。可以在双引号 " 定义的字符串中使用单引号 ',也可以在单引号 ' 定义的字符串中使用双引号 "

使用 as.character() 可以将其他的数据类型转换成字符串:

> as.character(3.14)
[1] "3.14" > as.character(T)
[1] "TRUE"

特殊字符的转义

转义是指输出具有特殊意义的字符,比如想要在双引号定义的字符串中使用双引号,或者在字符串中使用换行操作。和大多数语言一样,R 语言中使用反斜杠 \ 进行转义操作,常见的转义字符有换行符 \n,引号 \" \',以及对反斜杠本身进行转义 \\

> writeLines("Use \"double quotation\" in a string")
Use "double quotation" in a string > writeLines("Use line breaks\nin a string")
Use line breaks
in a string

字符串的其他常用操作

获取字符串的长度 nchar()

> nchar("Social Network")
[1] 14

字符串的拼接 paste()sep 参数为连接的字符:

> paste("Social", "Network", sep = "-")
[1] "Social-Network"

字符串的分割 strsplit()

> strsplit("Social-Network", "-")
[[1]]
[1] "Social" "Network"

字符串的截取 substr(),要注意的是,和大多数语言不同,R 语言的索引从 1 开始

> substr("Social Network", 1, 6)
[1] "Social"

字符串的格式化输出 sprintf(),在 R 语言中也采用类似 C 语言的风格对变量进行格式化:

  1. %s:字符串
  2. %f:浮点型
  3. %d:整数
  4. %e:科学计数法
> sprintf("The degree of the node is %d\n", 4)
[1] "The degree of the node is 4\n"

当需要输出转义字符串时,可以在外层套用 cat()

> cat(sprintf("The degree of the node is %d\n", 4))
The degree of the node is 4

️ 练习

1. 第一章留下的问题 "a"+"b" 会输出 ab 吗,如何将"a""b" 拼接成 "ab"

2. 截取 "Social Network" 中的 "Network"

参考

  1. An Introduction to R
  2. R 字符串 | 菜鸟教程

社交网络分析的 R 基础:(二)变量与字符串的更多相关文章

  1. 社交网络分析的 R 基础:(一)初探 R 语言

    写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件 ...

  2. 社交网络分析的 R 基础:(三)向量、矩阵与列表

    在第二章介绍了 R 语言中的基本数据类型,本章会将其组装起来,构成特殊的数据结构,即向量.矩阵与列表.这些数据结构在社交网络分析中极其重要,本质上对图的分析,就是对邻接矩阵的分析,而矩阵又是由若干个向 ...

  3. 社交网络分析的 R 基础:(四)循环与并行

    前三章中列出的大多数示例代码都很短,并没有涉及到复杂的操作.从本章开始将会把前面介绍的数据结构组合起来,构成真正的程序.大部分程序是由条件语句和循环语句控制,R 语言中的条件语句(if-else)和 ...

  4. 社交网络分析的 R 基础:(五)图的导入与简单分析

    如何将存储在磁盘上的邻接矩阵输入到 R 程序中,是进行社交网络分析的起点.在前面的章节中已经介绍了基本的数据结构以及代码结构,本章将会面对一个实质性问题,学习如何导入一个图以及计算图的一些属性. 图的 ...

  5. 社交网络分析的 R 基础:(六)绘图操作

    R 语言强大的可视化功能在科学研究中非常受欢迎,丰富的类库使得 R 语言可以绘制各种各样的图表.当然这些与本章内容毫无关系,因为笔者对绘制图表了解有限,仅限于能用的程度.接下来的内容无需额外安装任何包 ...

  6. Shell脚本之二 变量、字符串和数组

    一.Shell 变量 1.1 定义变量 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

  7. Python基础二_操作字符串常用方法、字典、文件读取

    一.字符串常用方法: name.captitalize()                       #字符串首字母大写 name.center(50,'*')                   ...

  8. Java 基础:变量 与 字符串

    变量 Java中没有初始化的变量是不能直接使用的 局部变量 String msg; System.out.print(msg); 就会提示错误,我们必须显式的为变量指定一个初值如null.刚开始学Ja ...

  9. python基础(变量,字符串,列表,元组)

    #列表的操作list1 = ['wuqiang','lichang','changhao'] #列表的定义print(list1) #操作列表print(list1[-1]) #操作列表的最后一位li ...

随机推荐

  1. 【剑指Offer】二叉树中和为某一值的路径 解题报告(Python)

    [剑指Offer]二叉树中和为某一值的路径 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervi ...

  2. 【剑指Offer】数字在排序数组中出现的次数 解题报告(Python)

    [剑指Offer]数字在排序数组中出现的次数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interv ...

  3. 基于MCRA-OMLSA的语音降噪(二):实现

    上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现.软件实现有多种方式.单纯看降噪效果可用python,因为python有丰富的库可 ...

  4. MacOS使用Docker创建MySQL主主数据库

    主从同步配置可以参考上一篇MacOS使用Docker创建MySQL主从数据库 一.创建MySQL数据库容器配置文件对应目录 我们在当前用户下创建一组目录,用来存放MySQL容器配置文件,(Linux下 ...

  5. WPF自定义界面WindowChrome

    WPF自定义界面WindowChrome 默认WPF的界面其实也还行,就是满足不了日渐增长的需求,界面还是需要有更高的自定义程度,包括标题栏也要能够塞下更多的操作控件. 默认窗口介绍 新建WPF项目, ...

  6. Java中PO、DO、DTO、 VO、 BO、POJO 、DAO、TO的概念

    1.  PO(persistant object) 持久对象 在 O/R 映射的时候出现的概念,如果没有 O/R 映射,没有这个概念存在了. 通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的 ...

  7. 分布式(CAP)

    1. Consistency  ------->C---------->一致性[写操作之后的读操作,必须返回该值] 2. Availability-------->A-------- ...

  8. 第四个知识点 P类复杂问题

    第四个知识点 P类复杂问题 原文地址:http://bristolcrypto.blogspot.com/2014/10/52-things-number-4-complexity-class-p.h ...

  9. Boosting Adversarial Training with Hypersphere Embedding

    目录 概 主要内容 代码 Pang T., Yang X., Dong Y., Xu K., Su H., Zhu J. Boosting Adversarial Training with Hype ...

  10. <数据结构>XDOJ321.高铁网络

    问题与解答 描述: 国家建设高铁网络,网络由一些连接城市的高铁线路构成.现有高铁建设情况可列为一张统计表,表中列出了每一条高铁线路直接连接的两个城市.国家的建设目标是全国每两个城市之间都可以实现高铁交 ...