列表列表中的lapply函数/循环R

时间:2015-07-22 11:01:10

标签: r list loops lapply

我知道这个主题出现在SO上几次,但是这些例子往往更复杂,我想对这种简单的情况有一个答案(或一组可能的解决方案)。我仍然围绕着R和编程一般。所以在这里我想使用lapply函数或一个简单的循环到data列表,它是三个向量列表的列表。

data1 <- list(rnorm(100),rnorm(100),rnorm(100))
data2 <- list(rnorm(100),rnorm(100),rnorm(100))
data3 <- list(rnorm(100),rnorm(100),rnorm(100))

data <- list(data1,data2,data3)

现在,我想获取每个向量的均值列表。结果将是三个元素(列表)的列表。

我只知道如何获取向量列表的结果列表和

for (i in 1:length(data1)){
        means <- lapply(data1,mean)
}

或通过:

lapply(data1,mean)

我知道如何使用rapply获得所有方法:

rapply(data,mean)

问题是rapply不维护列表结构。 非常感谢帮助和可能的一些提示/解释。

1 个答案:

答案 0 :(得分:39)

我们可以使用嵌套的ldd orm.so

遍历列表列表
lapply/sapply

以其他方式写成

 lapply(data, sapply, mean)

或者,如果您需要具有 lapply(data, function(x) sapply(x, mean)) 结构的输出,则可以使用嵌套的list

lapply

或者使用 lapply(data, lapply, mean) ,我们可以使用参数rapply来获取我们想要的输出类型。

how

如果我们使用 rapply(data, mean, how='list') 循环,我们可能需要创建一个对象来存储结果。

for