在R中一起添加列表中的各个数据帧

use*_*199 1 r list add dataframe

我在R中有两个数据帧列表(每个列表中的相应数据帧大小相同).是否可以在一行中将每个列表中的相应数据帧添加到一起.

比如说我们有

list1 <- list('a' = data.frame('x'=c(0,1),'y'=c(2,0)), 'b' = data.frame('x'=c(1,1),'y'=c(1,1)))
list2 <- list('a' = data.frame('x'=c(1,2),'y'=c(1,1)), 'b' = data.frame('x'=c(0,1),'y'=c(0,1)))
Run Code Online (Sandbox Code Playgroud)

所以list1是:

$a
 x y
 0 2
 1 0

$b
 x y
 1 1
 1 1
Run Code Online (Sandbox Code Playgroud)

而list2是:

$a
 x y
 1 1
 2 1

$b
 x y
 0 0
 1 1
Run Code Online (Sandbox Code Playgroud)

最终的输出是:

$a
 x y
 1 3
 3 1

$b
 x y
 1 1
 2 2
Run Code Online (Sandbox Code Playgroud)

显然可以通过以下方式在两个单独的行中执行此操作:

listOutput <- list()
listOutput[['a']] <- list1[['a']] + list2[['a']]
listOutput[['b']] <- list1[['b']] + list2[['b']]
Run Code Online (Sandbox Code Playgroud)

但有一种简单的方法可以在一行中完成,也许使用lapply?

谢谢

Mat*_*rde 8

这是一种保留名称的方法:

mapply(function(x, y) x + y, list1, list2, SIMPLIFY=FALSE, USE.NAMES=TRUE)
Run Code Online (Sandbox Code Playgroud)