gpt4 book ai didi

r - 在 R 中的列表元素上应用 "dim"函数

转载 作者:行者123 更新时间:2023-12-04 11:00:49 25 4
gpt4 key购买 nike

我有 n列表的数量,比如说 list1 , list2 , ..., listn .每个列表有 10 个元素,我需要计算每个列表的 10 个元素的“dim”的“平均值”。所以输出应该是一个长度为 n 的向量.

例如,输出向量的第一个元素应该是:

n1 = mean(dim(list1[[1]]), dim(list1[[2]]), dim(list1[[3]]), ..., dim(list1[[10]]) 

我知道如何使用 for 获得它-loops 但我确信这不是最好的解决方案。

这些列表的结构源自称为“edgeR”的“Bioconductor”R 包之一。
所以列表的每个元素都有这样的结构:
 $ :Formal class 'TopTags' [package "edgeR"] with 1 slots
.. ..@ .Data:List of 4
.. .. ..$ :'data.frame': 2608 obs. of 4 variables:
.. .. .. ..$ logFC : num [1:2608] 6.37 -6.48 -5.72 -5.6 -4.01 ...
.. .. .. ..$ logCPM: num [1:2608] 5.1 2.55 2.08 1.57 3.08 ...
.. .. .. ..$ PValue: num [1:2608] 3.16e-292 1.57e-187 2.15e-152 5.58e-141 1.27e-135 ...
.. .. .. ..$ FDR : num [1:2608] 7.37e-288 1.83e-183 1.67e-148 3.25e-137 5.92e-132 ...
.. .. ..$ : chr "BH"
.. .. ..$ : chr [1:2] "healthy" "cancerous"
.. .. ..$ : chr "exact"

由于每个列表有 10 个元素,因此在运行时我有 10 次上述结构的重复:
str(list1)

最佳答案

原始问题

lapply (或 sapply )是您的 friend :

mean(sapply(mylist,dim))

如果您有许多具有统一含义和结构的列表,您应该使用列表列表(即, mylist[[3]] 而不是 mylist3 )。

编辑的问题
sapply(mylist, function(x) mean(sapply(x,dim)))

将返回内部列表均值的向量。

评论中的问题

如果您的列表包含矩阵而不是向量,并且您想要平均其中一个维度( dim(.)[1]dim(.)[2] ),您可以使用 ncol and nrow 代替 dim .

或者,您可以在那里传递任何函数,例如,
sapply(mylist, function(x) mean(sapply(x, function(y) sum(dim(y)))))

对维度总和求平均。

关于r - 在 R 中的列表元素上应用 "dim"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com