R语言中常用的字符串处理函数:
(1)得到字符串长度:nchar()
# 生成示范字符串
(2)剪切字符串:strsplit()
# 对字符串进行剪切
(3) 得到子字符串:substr()
# 得到子字符串
(4) 判断字符串中是否有某个字串:grepl()
# 判断字符串中是否有某个字串
(5) 字符串替换:gsub()
(6)字符串定位
在Hmisc包里,有一个函数可以很方便的对文本的的目标字符串进行定位,substring.location()
R语言数据结构主要有以下四种:
四种数据结构,重点掌握 向量 和 数据框
判断数据结构的函数: class()
向量的详细讲解在上一篇文章,以下主要讲数据框,矩阵,列表:
以下大部分操作使用的数据框为df
几个重要的函数:查看数据框的行数和列数,行名和列名;以及单独查行的数量,列的数量
数据框取子集有几种方法 : $ 符号,坐标,名字,逻辑值
在 [,] 里,行在前面(左边),列在后面(右边),行与列用逗号 , 隔开: [行,列]
中括号里的逗号,表示维度的分割
数据框按照逻辑值取子集,TRUE对应的行/列留下,FALSE对应的行/列去掉。
修改第二列的列名,就是修改列名这个向量的第二个元素
https://blog.csdn.net/weixin_39718006/article/details/110516670
后续的笔记会有详细介绍
矩阵不能用 $ 符号取子集
t():转置函数,行与列的互换
as.data.frame():转换,把矩阵变为数据框 ,用as.matrix()函数也能把数据框变为矩阵
聚类,相似的行,相似的列会聚在一起。热图自动聚类,行和列的相对位置发生了变化,只是列与列,行与行之间的变化规律。
![热图自动聚类]]( https://upload-images.jianshu.io/upload_images/17511166-f6e2432a04cffbbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
热图默认聚类,修改参数,不让聚类,热图与表达矩阵对应。
默认的设置不符合自己的预期,可以子啊作者允许的范围内定义。
查看函数帮助文档,参考修改,达到自己的要求。
列表没有列名和行名,只有元素的名字。列表可以由数据框,矩阵,向量,单独的一个数字都可以组成。
列表没有行和列的概念,只有元素,取子集的两种方式: [[]] , $ ,
$ 有两个作用:数据框取子集和列表取子集。在矩阵和向量里不能用 $ 。
用 class() 函数更能具体说明问题, 判断数据结构和数据类型
以上内容是听 生信技能树 小洁老师的 R语言线上课 ,根据自己的理解记录下来,小洁老师授课非常细心,对不同水平的同学都照顾到,并且补充很多技巧以及注意事项。
认识R语言的四种数据结构,小洁老师强调重点掌握向量和数据框,在实战中遇到很多数据结构都是数据框,表达矩阵可以转化为数据框,数据框的一列可以看做是一个向量。小洁老师把实战中会需要的操作融入到练习题,在实战中能联想起小洁老师讲过的知识点。
用法:assign(x, value, pos = -1, envir = as.environment(pos), inherits = FALSE, immediate = TRUE)
assign函数在循环时候,给变量赋值。
举例说明:
1、
for (i in 1:(length(rowSeq)-1)){
assign(paste("nginx_server_fields7_", i, sep = ""), nginx_server_fields7[(rowSeq[(i-1)+1]):(rowSeq[i+1]), ])
}
2、
for (i in 1:3){
assign(paste("a", i, sep = ""), i:10)
}
ls()
[1] "a1" "a2" "a3" "i"
>a1
[1] 1 2 3 4 5 6 7 8 9 10
>a2
[1] 2 3 4 5 6 7 8 9 10
>a3
[1] 3 4 5 6 7 8 9 10
1、paste函数可用于字符串连接
用法:paste (..., sep = " ", collapse = NULL),分隔符默认为空格
我们简单举个例子
1)paste("a","b") ##能连接a b
[1] "a b"
paste("a","b","c")
[1] "a b c"
2)设置分隔符paste("a","b",sep="=") ##注意到用等号分隔了
[1] "a=b"
3)连接多个元素paste("a",1:5,sep="") ##会自动每个元素与a相连
[1] "a1""a2""a3""a4""a5"
4)paste("a",1:5,".pdf",sep="") ##比如想批量输出文件名
[1] "a1.pdf""a2.pdf""a3.pdf""a4.pdf""a5.pdf"、
2、collapse参数
谢益辉大佬说这个参数引无数英雄竞折腰啊,大家只会sep
1)paste("a",1,collapse="+") ##注意到了吧,collapse没用上
[1] "a 1"
2)paste(c("a","b","c"),collapse="+") ##这样就很容易理解了,collapse折叠起了元素
[1] "a+b+c"
3)paste("a",1:5,sep="") ##再来更明显的举例
[1] "a1""a2""a3""a4""a5"
4)paste("a",1:5,sep="",collapse="+") ##先在元素间连接,然后折叠
[1] "a1+a2+a3+a4+a5"
3、与paste0函数的区别
paste0函数,默认sep=""是两个函数唯一的区别
paste(c("a","b","c"),1:3)##默认空格符
[1] "a 1""b 2""c 3"
paste(c("a","b","c"),1:3,sep=" ")
[1] "a 1""b 2""c 3"
paste(c("a","b","c"),1:3,sep="")
[1] "a1""b2""c3"
如果两个向量长度不同paste(c("a","b","c"),1:5) ##超出范围后继续从前向后连接
[1] "a 1" "b 2" "c 3" "a 4" "b 5"
paste0(c("a","b","c"),1:3)#默认元素连接为sep=""
[1] "a1""b2""c3"
用法:unlist()函数的作用,就是将list结构的数据du,变zhi成非list的数据,即将list数据变成 字符串向量 或者数字向量的形式
如果是向量的话就直接输出向量
例子:
%in%相当于match()函数的一个缩写。用来判断一个数组或矩阵是否包含在另一个数组或矩阵里。举个例子一目了然:
#首先复制两个变量a和b
>a <- 1:5
>b <- 3:7
>a %in% b #看a的元素是否包含在b中输出结果如下:
[1] FALSE FALSE TRUE TRUE TRUE
用法:apply(x, MARGIN, FUN, ...)
作用:对 矩阵 的行或列使用函数,或者对 数组 的各个维度使用函数
x为数据对象,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列,FUN是自己指定的任意或自定义函数
注:数据框dataframe也可以使用apply函数,该函数会自动将数据框转化为矩阵,但前提是数据框中各列的数据类型 必须是数值型,否则会报错。
用法:lapply(x,FUN,...)
作用:对列表中的各个元素使用函数
x是格式为列表的数据源,FUN是任意函数。
intersect(data1,data2):交集
union(data1,data2):并集