画热图中耽误时间较久的部分
一. 循环产生的数据框合并
https://www.jianshu.com/p/db53f7463d3f?open_source=weibo_search
如下三个数据框
df1 <- data.frame(cell=c(1,2,3),val=c(345,123,466))
df2 <- data.frame(cell=c(67,3,2),val=c(234,234,56))
df3 <- data.frame(cell=c(3,67,23),val=c(23,8,34))
1. list+ do.call()
创建一个空list,利用get()将所有数据框写入,形成一个2维的list,然后利用do.call()进行合并
l <- list()
for(i in 1:3){
df.now <- get(paste0("df",i))
l[[i]] <- df.now
}
do.call(rbind,l)
实际中,我用for(i in length(vector)) {} 结果都只有最后一次循环的结果。 改成for(i in c(1:7))) {}
2. 先形成一个空的data.frame,然后直接利用rbind将变量数据框合并到最终的数据框中
- 我自己的数据用这种方法,老是报错
l <- data.frame()
for(i in 1:3){
df.now <- get(paste0("df",i))
l <- rbind(l, df.now)
}
二.按照特定顺序排序
sy=match(s,colnames(df))#生成索引,按照s的顺序来排df
df1=df[,sy] # 按照sy的顺序取子集
## [1] 2 3 1 5 4
网友评论