在学习单细胞数据的时候,使用 R 语言进行下游分析,作为生信工程师或者说是大数据工程师,甚至是程序员都无法记住所有 R 语言的使用,好记性不如烂笔头,记录下来(2022年7月13日):
1、biocondauctor 使用
官方网址:http://bioconductor.org/
点击 Install 之后:
Bioconductor 安装其他的包代码:
BiocManager::install() #这里写包名
2、数据框(data.frame)使用:
数据框的创建:
data.frame()#里面输入向量,无论什么类型的向量
说到这里,我们可以讲讲 C()
函数,当你向C()
函数里输入一堆数字,英文逗号分割时,它是数值型向量,当你向C()
函数里输入一堆字符 (字符串) ,英文逗号分割时,它是字符型型向量。等等。但是,它的输入必须输入同一类型数据。
而在数据框里面,你可以用多个C()
函数,并且输入多种数据类型的向量进行组合成数据框。
这里要深刻认识,向数据框输入的向量,变成了按列分布:
a = c(1,2,3,4,5,6)
b = c("a","b","c","d","e","f")
data.frame(a,b)
将其他数据类型强制转化成数据框类型(as.data.frame()函数
):
a = list(姓名 = c("张三","李四","王五"),成绩 = c(60,85,90))
as.data.frame(a)
其他的数据结构也可以同一进行强制转换,这里就不一一转化了,另外,向量、列表、数组这三个在 R 语言中很常见,需要深入区分开。
数据框的使用:
切片使用,可以看作是二维数组进行访问:
a = list(姓名 = c("张三","李四","王五"),成绩 = c(60,85,90))
b = as.data.frame(a)
b[2,2]
输入列(行)名或是输入列(行)号
b["成绩"]
b[2]
b[2,]
数据框的修改:
本人在使用数据框的时候,使用了merge()
函数,rbind()
函数,cbind()
函数
rbind()
函数是加入一行的意思,cbind()
函数是加入一列的意思,merge()
函数是合并两个数据框的意思,这里着重学习merge()
函数:
merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
incomparables = NULL, ...)
#x,y是两个数据框,也可以使用其他的数据类型
# intersect(names(x), names(y))的意思是通过两个数据框公共列名进行合并,等于取交集
#当合并要用到的共同列在数据框中的列名称不同时,不使用by,而用by.x = by, by.y = by,第一个为x数据框列名,第二个为y数据框列名
#all=TRUE相当于all.x=TRUE&all.y=TRUE
#all=FALSE相当于all.x=FALSE&all.y=FALSE
#若all.x=TRUE,则将在y中没有匹配的那些x数据也加入输出结果,y中没有的这些行将会产生NA值。默认是FALSE,只有x与y数据框均有的行会被包含在输出结果中。
#all=TRUE,取并集
#all.x=TRUE,all.y=FALSE:取x的全集与匹配的y数据
#all.x=FALSE,all.y=TRUE:取y数据框的全集与匹配的x数据框数据
3、apply()
函数的学习使用:
apply()
这个函数可以将数据框等二维或是多维度数据进行for
循环
X
为数据框,margin
可以选择1
或2
,1
代表行循环,2
代表列循环FUN
可以输入一个函数,比如mean
函数,也可以自定义函数,其参数就是循环的那一列向量或是行向量,返回值是FUN
函数的结果,一行行或是一列列返回,形成一个向量:
a = list(身高 = c(188,178,190),成绩 = c(60,85,90))
b = as.data.frame(a)
apply(b, 2, mean)
apply(b,1,sum)