我有以下包含重复名称的列表
> l
$A
[1] 2
$A
[1] 4
$B
[1] 10
我找不到将这些元素的值平均化为一个“ A”元素的合并方法。结果列表应如下所示
> l
$A
[1] 3
$B
[1] 10
是否可以生成此列表?
答案 0 :(得分:2)
这里是base R
的{{1}}选项
aggregate
如果我们在aggregate(values ~ ind, stack(li), FUN = mean)
中需要它,则执行list
并遍历split
以获得list
mean
lapply(split(li, names(li)), function(x) mean(unlist(x)))
#$A
#[1] 3
#$B
#[1] 2
答案 1 :(得分:0)
使用tidyverse:
library(tidyverse)
li <- list(A = 2, A = 4, B = 2)
tibble(key = names(li), value = unlist(li)) %>%
group_by(key) %>%
summarize(mean = mean(value))