我正在处理包含22个表(235个6个变量的ob)的大型列表results.list
。
我想按特定列(FDR)False Discovery率对每个表进行排序,然后选择前100行。我可以使用简单的 R 命令手动执行此操作。
attach(results.list$adult.OLFvsVTA)
sort(FDR)
detach(results.list$adult.OLFvsVTA)
adult.OLFvsVTA100<-adult.OLFvsVTA[1:100,]
我想要合并所有22个表中的前100行。我不希望组合向量中的FDR值,而是我想将前100行组合成一个名为(genes)的列。我想使用apply函数自动执行此过程。尽管进行了一系列的尝试,但我无法让它发挥作用。我创建了另一个名为r.names
的向量,其中包含我计划提供给应用函数的列表中所有22个表的名称。我阅读了几个应用帮助页面,但我无法让它工作。任何帮助,将不胜感激。
答案 0 :(得分:0)
do.call(rbind, lapply(results.list, function(dd) { dd[with(dd, order(FDR)),][(1:100), ]}))
所以假设results.list是我们想要应用的数据帧列表(lapply用于列表),它是通过FDR对它们进行排序并获取前100行的函数(function(dd){....}&lt; - 从其他stackoverflow帖子中窃取,按列排序)到每个数据框。结果将是数据帧列表。我们可以调用do.call这是一个花哨的函数,它带有一个函数和一个列表,列表将从列表中分解为函数的参数。在这种情况下,我们的函数是rbind将采用 X 数量的100行表并创建一个大表。如果您想进一步解释,请告诉我。