来源:BV1td4y1r7mL 人话R语言教程
- 非常适合用来进行临床数据分析/RNA-seq进行分析
构建DataFrame
- 构建DataFrame需要用到的函数是data.frame
- 这个函数接受的参数是多个等长的向量,而且参数的名字将转化为列的名字,向量可以用变量来带入,也可以自己手搓一个向量
- 温馨提示:要注意写作规范,在设置变量的时候要注意使用”<-“进行赋值,而且在这个符号前后要加空格
- dataframe函数不指定数据类型,不像matrix只能使用一种数据类型,dataframe只要求每一列是一种数据类型
DataFrame的取值与替换
- 取值与替换值:基本用法与matrix相同,可以用”,”取值,前后接受数值和数值型向量,也接受逻辑型向量
特殊取值用法:
- “,”前后还接受与行列名相同的字符串向量
- dataframe还可以用”$”进行取值,这个特异性地只对列取值,可以认为返回的已经是一个向量了,而且这个向量还可以嵌套另一个向量进行取值
- 举例:对dataframe:student_score进行取值,取”name”列的内容,可以输入函数student_score$name
- 如果要对student_score$name的内容进行进一步取值,可以用向量,比如要取name列的第2-3个,可以在name后面加上[c(2,3)],这种情况下取出来的是字符串型向量
- 如果在student_score$name后面加上的是[单个数字],取出来的就是一个字符串变量了
- 通过函数which构建逻辑型向量,进行取值
- which函数:这个函数接受逻辑型向量,并且将逻辑型中true所处的位置返回,返回的内容是一个数值型向量,比如which(T,F,T)输出的结果是c(1,3)
- 简单构建逻辑型向量的方法:通过比大小的运算符号,即”>”,”≥”,”<””≤””=””≠”来判断
- 把前面的内容组合一下,比如我们可以构建函数student_score$score,然后再加上判定条件,比如”≥70”就组成了一个逻辑型向量
- 我们把逻辑型向量和which函数组合起来,which(student_score$score≥70),得到的输出结果就是对应的位置,再把这个位置通过dataframe[行,列]进行取值,就可以得到我们想要的结果了
- 通过函数%in%构建数值型向量,进行取值
- %in%函数比较特别,它夹在两个数值型向量之间,即向量1%in%向量2
- 这个函数的作用:判断向量1有没有在向量2中存在,返回的是布尔值,即True或False,然后我们可以通过logical取值的方法进行取值
- which-[行,列]法取值和%in%函数取值的区别
- which函数的取值,最终是转换为[行,列]的方式去取值,也就是如果which函数输出的结果超过了原datamatrix的行,列的取值范围,那便不能输出结果
- %in%函数不存在这个问题,因为这个函数允许向量1不存在于向量2中,这种情况下输出FALSE就可以了
替换原则:取多少,替换多少
DataFrame行列名的替换
- 函数:rownames和colnames
- 这两个函数接受的输入数据值只能是matrix或dataframe,输出数据是向量,因此,换名问题的本质是向量的替换问题