我在R中遇到麻烦

时间:2015-02-14 00:33:02

标签: r sapply

我有一个包含5个元素的列表。每个元素都是一个具有相同3列的数据框:probe.id,gene.name和variance。实际上,我希望从列表元素中提取方差列,并用空矩阵对其进行rbind。这是我的代码:

top100 <- c()
top100 <- rbind(top100, sapply(varianceList,function(x){
 x$variance
}))

问题是我得到一行矩阵,每个单元格都有很多值。所以没有:

345   5667   ...   567
34    98     ...   50
...   ...    ...   ...

我明白了:

c(345,34,..)   c(5667, 98,...)  ... c(567, 50,...)

任何建议都会受到高度赞赏,因为合作者经常发送不同大小的发送大型列表。因此,我希望能够在不事先知道列表大小的情况下自动化流程。谢谢!

1 个答案:

答案 0 :(得分:2)

如果希望sapply返回矩阵或向量,则作为sapply的第二个参数提供的函数需要具有固定长度和输出类型,否则返回列表,即你得到了什么。因此,sapply适用于minmaxvarfivenumrange等功能,并且不适合{ {1}},[[[,除非您可以保证$的第一个参数中包含的data.frames或矩阵都具有相同的维度。