gpt4 book ai didi

r - R 中数据帧列表的逐元素中值

转载 作者:行者123 更新时间:2023-12-05 09:25:42 24 4
gpt4 key购买 nike

我有几个列表,每个列表都包含许多数据框。我想计算每个列表中每个数据框的元素的元素中值,即元素 [[1]][1,1] 之间的中值。的 list1 , 元素 [[1]][1,1]list2和元素 [[1]][1,1]list3 ,对所有元素依此类推。每个数据框都有很多列,但这里有一些只有两列的示例数据:

set.seed(1)

list1 <- list(data.frame(a = sample.int(10, 4), b = sample.int(10, 4)),
data.frame(a = sample.int(10, 4), b = sample.int(10, 4)))

list2 <- list(data.frame(a = sample.int(10, 4), b = sample.int(10, 4)),
data.frame(a = sample.int(10, 4), b = sample.int(10, 4)))

list3 <- list(data.frame(a = sample.int(10, 4), b = sample.int(10, 4)),
data.frame(a = sample.int(10, 4), b = sample.int(10, 4)))

这是预期的结果:

[[1]]
a b
7 4
9 9
7 3
4 6

[[2]]
a b
5 7
8 6
2 6
5 2

有什么建议吗?

最佳答案

使用 purrr:

library(purrr)
lsts <- list(list1,list2,list3)

map(transpose(lsts),~map_dfc(transpose(.), ~apply(list2DF(.x),1,median)))

[[1]]
# A tibble: 4 × 2
a b
<int> <int>
1 7 4
2 9 9
3 7 3
4 4 6

[[2]]
# A tibble: 4 × 2
a b
<int> <int>
1 5 7
2 8 6
3 2 6
4 5 2

在 Base R 中,假设它们都具有相同的结构:

dims <- c(dim(list1[[1]]), length(list1), length(lsts))
d <- apply(array(unlist(lsts), dims), head(seq(dims),-1), median)
asplit(aperm(d, c(1,3,2)), 3)

[[1]]
[,1] [,2]
[1,] 7 4
[2,] 9 9
[3,] 7 3
[4,] 4 6

[[2]]
[,1] [,2]
[1,] 5 7
[2,] 8 6
[3,] 2 6
[4,] 5 2

关于r - R 中数据帧列表的逐元素中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75354355/

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