我有一个包含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,...)
任何建议都会受到高度赞赏,因为合作者经常发送不同大小的发送大型列表。因此,我希望能够在不事先知道列表大小的情况下自动化流程。谢谢!
答案 0 :(得分:2)
如果希望sapply
返回矩阵或向量,则作为sapply
的第二个参数提供的函数需要具有固定长度和输出类型,否则返回列表,即你得到了什么。因此,sapply
适用于min
,max
,var
,fivenum
,range
等功能,并且不适合{ {1}},[
和[[
,除非您可以保证$
的第一个参数中包含的data.frames或矩阵都具有相同的维度。