为什么发出这种来自灵魂的拷问
ggplot画图的思路基本是一列是数据,一列是标签,有一次脑袋抽抽想看下转录组fpkm的分布,所以要从fpkm的矩阵中把他整理成每个样本后面打个标签,然后在整理成两列,再用ggplot2画个密度分布曲线。就有了下面的代码:
df1 <- list() # 建一个空的list()用来存储每个sample的数据
for (i in c(1:length(colnames(f)))) {
## 第一步,先对每个样品建一个df,包含了fpkm值和标签(colnames 样品名字)
df1[[i]] <- data.frame(row.names = rownames(f),
x = f[,i],
y = rep(colnames(f)[i], times = length(rownames(f))))
# 第二步,对于第一个(i == 1)让他直接赋值到a,而从第二个开始每次都和上一个rbind,最后一个的时候没有下一个了,就让a = a, 这里好像直接打a = df1[[i]] 不行,必须用<- 赋值,不知道什么情况...
ifelse(i == 1 , a <- df1[[i]],
ifelse(i == length(f),
a <- a,
a <- rbind(a,df1[[i]])))
}
共有153个样品,三个组织,其实我做了个嵌套,这里没写外面那层循环,当时我以为死机了,rbind感觉好慢呀!!!!有没有大佬有啥好办法。救救孩子....
问题解决
其实有个函数叫rbind list
网友评论