我有一个返回向量和矩阵列表的函数。然后,我创建一个变量,该变量是对函数调用的几个结果列表的列表。所以我有一个列表列表。我的问题是如何在这些列表的元素上应用函数(注意这与在列表本身上应用函数不同)。这是一个简单的例子,它保留了我正在做的所有基本特征
numtrials = 5
x = rep(list(NULL),numtrials)
testfunction = function(){return( list( c(1,2,3,4,5), matrix(runif(10), 2,5),
matrix(0,2,2) ) )}
for(index in 1:numtrials){
x[[index]] = testfunction()
}
我现在想计算x[[index]][[2]]
所有“索引”列表中的 (2,3) 元素的平均值。或者甚至更好地得到一个均值矩阵,xbar
,这样xbar[i,j] = mean(x[[]][[2]][i,j])
。我试图玩弄(当然还阅读了帮助文件)lapply
, and apply
,但无法让它工作。原因之一是这x[[]][[2]][i,j]
似乎是无效的符号
Error in x[[]] : invalid subscript type 'symbol'
我认为 R 不知道如何理解“ [[]]
”。我知道有些人会建议向量化,但请注意,我的函数返回不同、不相关维度的矩阵和向量(尽管如果你有一个聪明的方法,我不反对向量化)。