动态地将列附加到数据框R

时间:2017-05-18 21:44:39

标签: r dataframe

如何在数据框中追加列? 我正在迭代我的数据矩阵,如果某些数据与我设置的阈值一致,我想将它们存储在1行数据帧中,这样我就可以在循环结束时进行打印。 我的代码看起来像这样: for(i in 1:nrow(my.data.frame)){     #将基因名称存储在变量中,并将其用作1行数据帧的行名称。     gene.symbol< - rownames(my.data.frame)[i]     #init要输出的数据帧     gene.matrix.of.truth< - data.frame(matrix(ncol = 0,nrow = 0))     for(j in 1:ncol(my.data.frame)){         if(my.data.frame [i,j]< threshold){             str< - paste(colnames(my.data.frame)[j],&#39 ;;',my.data.frame [i,j],sep ='')             #我想把这个str附加到gene.matrix.of.truth             #我试过gene.matrix.of.truth< - cbind(gene.matrix.of.truth,str)但是没有把我带到任何地方。         }     }     #理想情况下,我想在这里打印数据帧。     #但是,如果没有达到我的要求,则无需打印。     if(ncol(gene.matrix.of.truth)!= 0){         write.table(粘贴(' out _',gene.symbol,sep =''),gene.matrix.of.truth,row.names = T,col.names = F ,sep =' |',quote = F)     } }

1 个答案:

答案 0 :(得分:1)

我一直这样做,但是用行而不是列。从

开始
gene.matrix.of.truth = data.frame(x = character(0))

而不是启动时的gene.matrix.of.truth <- data.frame(matrix(ncol = 0, nrow = 0))。您在for j循环中的追加步骤将是

gene.matrix.of.truth = rbind(gene.matrix.of.truth, data.frame(x = str))

(即在str周围创建一个数据框并将其附加到gene.matrix.of.truth)。

显然,您的最终if语句将是if(nrow(...))而不是if(ncol(...)),如果您希望最终表格成为一个大行,您需要t来转置您的数据框架在印刷时间。