我有十个庞大的列表(每个列表有七个元素,但是这些元素都很大),我需要计算这些列表的逐个元素的平均值。因此,如果有A1、A2、A3、...、A10等列表,我需要计算:
mean1 = mean(A1[[1]], A2[[1]], A3[[1]], ...,A10[[1]])
.
.
.
mean7 = mean(A1[[7]], A2[[7]], A3[[7]], ....A10[[7]])
我用for循环做了它,但我想知道R是否提供了更好的解决方案。提前感谢。
A[[·]]
是以下列表中的向量,> ( List <- list(A=1:4, B=5:8, C=9:12) )
$A
[1] 1 2 3 4
$B
[1] 5 6 7 8
$C
[1] 9 10 11 12
那么您可以使用这种方法来获取平均值:
> rowMeans(simplify2array(List))
[1] 5 6 7 8
rowMeans(as.data.frame(List))
将给您相同的结果。
A1 <- 1:10; A2 <- 21:20; A3 <- 21:30; rowMeans(do.call(cbind,list(A1,A2,A3)))
... :) - texbsimplify2array
函数。它似乎在内部是matrix(unlist(.., use.names=FALSE), nrow=..)
。 - ArunA
是向量列表:Anames <- paste0("A", 1:10)
# for completeness
for(A in Anames)
assign(A, lapply(1:7, function(x) rnorm(1000)))
sapply(1:7, function(i)
{
m <- sapply(Anames, function(A) get(A)[[i]])
mean(m)
})
A
副本,而是一次获取一个并提取所需的向量。但如果您有足够的内存来存储所有数据,那么您可能也负担得起存储一个副本。
A1[[1]]
是一个向量还是矩阵? - Jilber Urbina