gpt4 book ai didi

r - 列表列表中向量的平均值

转载 作者:行者123 更新时间:2023-12-04 21:57:18 25 4
gpt4 key购买 nike

我有一个具有以下结构的列表列表:

> mylist <- list(list(a=as.numeric(1:3), b=as.numeric(4:6)), 
list(a=as.numeric(6:8), b=as.numeric(7:9)))
> str(mylist)
List of 2
$ :List of 2
..$ a: num [1:3] 1 2 3
..$ b: num [1:3] 4 5 6
$ :List of 2
..$ a: num [1:3] 6 7 8
..$ b: num [1:3] 7 8 9

我想得到向量之间的元素平均值 abmylist .对于向量 a ,结果是这样的:
> a
[1] 3.5 4.5 5.5

我知道函数 lapply , rbindcolMeans但我无法解决他们的问题。我怎样才能达到我所需要的?

最佳答案

这是使用 melt 的一种方法和 dcast从“ reshape 2”。

library(reshape2)

## "melt" your `list` into a long `data.frame`
x <- melt(mylist)

## add a "time" variable to let things line up correctly
## L1 and L2 are created by `melt`
## L1 tells us the list position (1 or 2)
## L2 us the sub-list position (or name)
x$time <- with(x, ave(rep(1, nrow(x)), L1, L2, FUN = seq_along))

## calculate whatever aggregation you feel in the mood for
dcast(x, L2 ~ time, value.var="value", fun.aggregate=mean)
# L2 1 2 3
# 1 a 3.5 4.5 5.5
# 2 b 5.5 6.5 7.5

这是base R中的一种方法:
x <- unlist(mylist)
c(by(x, names(x), mean))
# a1 a2 a3 b1 b2 b3
# 3.5 4.5 5.5 5.5 6.5 7.5

关于r - 列表列表中向量的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478531/

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