一.知识回顾
1.回顾前两天高频实用命令
paste0(“gene”,1:3) #paste0(rep(“gene”,3),1:3)的简化写法。注:引号英文格式
k1 = rnorm(12)#取随机数
(x <- c(1,3,5)); x <- c(1,3,5)#x赋值+输出一起执行两种方法。
x %in% y #x的元素是否在y中,不补齐。
seq(1,11,2)#从1到11每隔一个数取一个数,1,3,5,7,9,11
x[4] <- 40#取子集11并赋值40
x[x>10] <- 10#将大于10的赋值为10
2.链接知识学习
https://mp.weixin.qq.com/s/2eJPrT7lz562vX0ij4gfVg
(1)如何将两个向量合到一起,组成一个长向量?
x=c(1,3,5)
y=c(2,3,4)
test=c(x,y)
test
[1] 1 3 5 2 3 4
(2)如何在向量首/尾增加一个元素?
x=c(3,x)
x=c(x,4)
(3)如何在向量第n位增加一个元素?
n=3
x=c(1,3,5,8,6)
x
[1] 1 3 5 8 6
y=c(x[1:n-1],7,x[n:length(x)])
y
[1] 1 3 7 5 8 6
3.数据框创建和读取
df <- data.frame(gene = c("gene1","gene2","gene3"),
sam = c("sample1","sample2","sample3"),
exp = c(32,34,45))
df2 <- read.csv("gene.csv")
数据框浏览,几行几列 dim()
rownnames()行名;colnnames()列名
4.数据框操作
4.1数据框取子集
df[2,2]
df[2,]
df[,2]
df[c(1,3),1:2]
df[,"gene"]
df[,c('gene','exp')]
mean(dfexp<-c(12,23,50)
df$abc <-c(23,15,37)
df
改行名和列名
rownames(df) <- c("r1","r2","r3")
只修改某一行/列的名
rownames(df)[2]="x"
如何按照制定顺序重排列名
https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA
4.3去除含有缺失值的行
生成一个有NA的数据框
df<-data.frame(X1 = LETTERS[1:5],X2 = 1:5)
df[2,2] <- NA
df[4,1] <- NA
df
na.omit(df)
4.4两个表格的链接
test1 <- data.frame(name = c('jimmy','nicker','doodle'),
blood_type = c("A","B","O"))
test1
test2 <- data.frame(name = c('doodle','jimmy','nicker','tony'),
group = c("group1","group1","group2","group2"),
vision = c(4.2,4.3,4.9,4.5))
test2
test3 <- data.frame(NAME = c('doodle','jimmy','lucy','nicker'),
weight = c(140,145,110,138))
tmp =merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME")
4.5转置和转换
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #列名
m
转置
t(m)
转换为数据框
as.data.frame(m)
4.6矩阵画热图
pheatmap::pheatmap(m)
5.列表构建取子集
列表
l <- list(m=matrix(1:9, nrow = 3),
df=data.frame(gene = paste0("gene",1:3),
sam = paste0("sample",1:3),
exp = c(32,34,45)),
x=c(1,3,5))
l
l[[2]]
l$df
网友评论