Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法或内置的R函数可以对列表中重复名称的值求和?_R_List_Duplicates_Names - Fatal编程技术网

是否有一种方法或内置的R函数可以对列表中重复名称的值求和?

是否有一种方法或内置的R函数可以对列表中重复名称的值求和?,r,list,duplicates,names,R,List,Duplicates,Names,假设我有以下列表: values <- list(2, 8, 3, 21, 54, 2, 43, 31) countries <- list('US', 'UK', 'China', 'US', 'Russia', 'UK', 'US', 'China') names(values) <- countries 值一个选项可以是: as.list(with(aggregate(values ~ ind, sum, data = stack(values)),

假设我有以下列表:

values <- list(2, 8, 3, 21, 54, 2, 43, 31)
countries <- list('US', 'UK', 'China', 'US', 'Russia', 'UK', 'US', 'China')
names(values) <- countries
值一个选项可以是:

as.list(with(aggregate(values ~ ind, sum, data = stack(values)), 
             setNames(values, ind)))

$US
[1] 66

$UK
[1] 10

$China
[1] 34

$Russia
[1] 54

同样有效。起初我没有看到您有列表。

一个使用
tidyverse

library(dplyr)
library(tibble)
library(tidyr)
enframe(values) %>%
    unnest(c(value)) %>% 
    group_by(name) %>% 
    summarise(value = sum(value)) %>%
    deframe %>% 
    as.list
#$China
#[1] 34

#$Russia
#[1] 54

#$UK
#[1] 10

#$US
#[1] 66

或使用
base R

as.list(tapply(unlist(values), names(values), sum))
#$China
#[1] 34

#$Russia
#[1] 54

#$UK
#[1] 10

#$US
#[1] 66

太好了!我一直在摆弄和尝试aggregate(),但一直没有弄明白,谢谢!
as.list(tapply(unlist(values), names(values), sum))
#$China
#[1] 34

#$Russia
#[1] 54

#$UK
#[1] 10

#$US
#[1] 66