gpt4 book ai didi

r - 在列表列表 R 上应用函数/循环

转载 作者:行者123 更新时间:2023-12-02 03:46:30 24 4
gpt4 key购买 nike

我知道这个主题在 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(数据,平均值)

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

最佳答案

我们可以使用嵌套的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循环,我们可能需要创建一个对象来存储结果。

  res <- vector('list', length(data))
for(i in seq_along(data)){
for(j in seq_along(data[[i]])){
res[[i]][[j]] <- mean(data[[i]][[j]])
}
}

关于r - 在列表列表 R 上应用函数/循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561238/

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