今天学习的主要内容是R语言中字符串、列表的基础知识和使用方法。
R语言字符串
字符串可以使用一对单引号'这里添加文字'
或一对双引号"这里也可以"
来表示。同一种引号不可以嵌套使用,如下:
- 单引号字符串中可以包含双引号,不可以包含单引号。
- 双引号字符串中可以包含单引号,不可以包含双引号。
字符串的操作
- paste函数
该函数能拼接字符串,默认语法格式为paste(..., sep = " ", collapse = NULL)
其中sep参数代表拼接时分隔符,默认是一个空格。如果拼接的元素是向量,那么先拼接每个元素,然后用collapse
参数进行连接。比如下方示例,letters
函数能依次生成大写字母,1:3
表示从1到3依次的整数,结果中先是一个字母连接一个数字,然后将三部分用“和”连接。
> paste(letters[1:3],1:3,sep = "+",collapse = "和") [1] "a+1和b+2和c+3"
- format函数
语法格式为format(x, digits, nsmall, scientific, width, justify = c("left", "right", "centre", "none"))
参数说明:
- x :输入对向量
- digits :显示的位数
- nsmall :小数点右边显示的最少位数
- scientific :设置科学计数法
- width :通过开头填充空白来显示最小的宽度
- justify:设置位置,显示可以是左边、右边、中间等。
> print(format(1.324,digits=2)) #显示两位,最后一位四舍五入 [1] "1.3" > print(format(1.324,scientific = TRUE)) #使用科学计数法 [1] "1.324e+00" > print(format(1.2,nsmall = 5)) #小数点后侧最少显示多少位,没有的用0代替 [1] "1.20000" > print(format(6)) #将数字转为字符串 [1] "6" > print(format(1.6,width = 5)) # 宽度设为5,如果位数不够在前面自动加空格,如果位数超出无变化。 [1] " 1.6" > print(format("shengxinbiji",width = 17,justify = "c" )) #字符串对齐方式选择,左对齐l,右对齐r,居中c [1] " shengxinbiji "
- nchar函数
用于统计字符串的长度,语法格式为nchar()
,也可以统计向量或数字。如下
> nchar("shengxinfenxibiji") [1] 17
- substring函数
语法结构为substring("字符串",开始截取位置,结束截取位置)
,使用如下:
> substring("shengxinfenxibiji",9,13) [1] "fenxi" # 将输入字符串从第9位到第13位之间内容截取出来
R语言列表
列表是 R 语言的对象集合,可以用来保存不同类型的数据,可以是数字、字符串、向量、另一个列表等,当然还可以包含矩阵和函数。
R语言使用list()
命令来创建列表,创建一个包含多种数据结构的列表,用names()
命名元素,并输出它,如下:
list_one = list("shengxin","biji",c(1,2,3),4) names(list_one) = c("a","b","c","d") print(list_one) #输出结果如下: $a [1] "shengxin" $b [1] "biji" $c [1] 1 2 3 $d [1] 4 # 命名后,可以使用“列表名$元素名”调取指定内容 print(list_one $ a) [1] "shengxin"
- 操作列表元素
可以对列表进行添加、删除、更新的操作。下面进行示例:
> # 首先创建一个包含字符串、矩阵、列表的列表 > list_two = list(c("sheng","xin"),matrix(c(1,2,3,4,5,6),nrow = 2),list("bi ji",7)) > # 对元素进行命名 > names(list_two) = c("zifu","juzhen","liebiao") > # 添加元素 > list_two[4] = "new" #列表后面加方括号代表列表的第几个元素 > print(list_two[4]) [[1]] [1] "new" > # 删除元素 > list_two[4] = NULL #删除即把值和值的位置全部设为空NULL > print(list_two) $zifu [1] "sheng" "xin" $juzhen [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 $liebiao $liebiao[[1]] [1] "bi ji" $liebiao[[2]] [1] 7 > # 更新修改元素 > list_two[3] = "translate" > print(list_two[3]) $liebiao [1] "translate"
- 合并列表
使用c()
命令将多个列表合成一个列表。合并过程中会依次按照列表中元素原来的位置依次生成新列表,如下:
> # 合并列表 > list1 = list("sheng","xin") > list2 = list(5,6) > out_list = c(list1,list2) #合并步骤 > print(out_list) [[1]] [1] "sheng" [[2]] [1] "xin" [[3]] [1] 5 [[4]] [1] 6 # 按顺序输出元素
- 列表转化为向量
列表转换为向量可以使用 unlist()
函数。将列表转换为向量,可以方便我们进行算术运算,如下:
> # 创建两个列表 > list_1 = list(1:3) > list_2 = list(4:6) > # 转化为向量 > v_1 = unlist(list_1) > v_2 = unlist(list_2) > # 两个向量算数相加 > out_sum = v_1 + v_2 > print(out_sum) [1] 5 7 9 #两个向量相加,会把相同位置的元素相加,结果仍是向量。
参考资料: