平均列表重复元素

时间:2019-04-18 14:41:18

标签: r list dictionary key

我有以下包含重复名称的列表

> l
$A
[1] 2

$A
[1] 4

$B
[1] 10

我找不到将这些元素的值平均化为一个“ A”元素的合并方法。结果列表应如下所示

> l
$A
[1] 3

$B
[1] 10

是否可以生成此列表?

2 个答案:

答案 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))