如何对具有相同名称的列表元素求和?

Win*_*sch 6 aggregate r sum list lapply

我正在寻找这个问题的解决方案:我有一个这样的列表列表

sample = list("element1" = list("term1"=0.5, "term2"=1, "term3"= 4, "term1"= 0.5), "element2" = list("term23"=5, "term1"=2, "term23"=4))
Run Code Online (Sandbox Code Playgroud)

对于外部列表的每个列表,我想对具有相同名称的值求和.所以期望的输出是

desired_output = list("element1" = list("term1"=1, "term2"=1, "term3"= 4), "element2" = list("term23"=9, "term1"=2))
Run Code Online (Sandbox Code Playgroud)

实际上,我想过用这样的东西

result = lapply(sample, function(l) aggregate(l, by = list(names(l)), FUN = sum))
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误.有关于此的任何想法?提前致谢.

Flo*_*ian 3

尝试这个:

lapply(sample, function(y) {lapply(split(y,names(y)), function(x) {Reduce("+", x) })})
Run Code Online (Sandbox Code Playgroud)

输出:

$element1
$element1$term1
[1] 1

$element1$term2
[1] 1

$element1$term3
[1] 4


$element2
$element2$term1
[1] 2

$element2$term23
[1] 9
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!