gpt4 book ai didi

r - R中每行的列表计算之间

转载 作者:行者123 更新时间:2023-12-04 10:53:23 25 4
gpt4 key购买 nike

假设我有以下 df 列表(实际上我有更多 df)。

seq <- c("12345","67890")

li <- list()

for (i in 1:length(seq)){

li[[i]] <- list()

names(li)[i] <- seq[i]

li[[i]] <- data.frame(A = c(1,2,3),
B = c(2,4,6))
}

我想做的是计算列表之间相同单元格位置内的平均值,并保持与原始列表相同的行数和列数。我怎么能这样做?我相信我可以使用 apply() 函数,但我不确定该怎么做。

预期输出(不足为奇):

  A B
1 1 2
2 2 4
3 3 6

实际上,每个列表中的值不一定相同。

最佳答案

如果没有NA,那么我们可以Reduce得到每个元素的观测总和并除以长度 列表

Reduce(`+`, li)/length(li)
# A B
#1 1 2
#2 2 4
#3 3 6

如果有 NA 值,那么最好使用 mean(它有 na.rm 参数)。为此,我们可以将其转换为array,然后使用apply

apply(array(unlist(li), dim = c(dim(li[[1]]), length(li))), c(1, 2), mean)

tidyverse 中的等效选项是

library(tidyverse)
reduce(li, `+`)/length(li)

关于r - R中每行的列表计算之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249803/

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