在列表中的R一起加入各自dataframes(Add respective dataframes i

2019-09-30 05:15发布

我有作为R dataframes的2所列出(其中在每一列表中的各自dataframes具有相同的尺寸)。 是否有可能在每个列表中添加相应的dataframnes一起在同一行。

例如说,我们有

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

所以list1的是:

$a
 x y
 0 2
 1 0

$b
 x y
 1 1
 1 1

和List2是:

$a
 x y
 1 1
 2 1

$b
 x y
 0 0
 1 1

最后的结果将是:

$a
 x y
 1 3
 3 1

$b
 x y
 1 1
 2 2

这样做可以明显这样做是两个不同的线路:

listOutput <- list()
listOutput[['a']] <- list1[['a']] + list2[['a']]
listOutput[['b']] <- list1[['b']] + list2[['b']]

但有一个简单的方法,在一行中要做到这一点,也许使用lapply?

谢谢

Answer 1:

下面是保留名称的方法:

mapply(function(x, y) x + y, list1, list2, SIMPLIFY=FALSE, USE.NAMES=TRUE)


Answer 2:

这里是一个解决方案,这是非常具体的,以你的问题。 换句话说,它假设:

  1. 你有两个名单
  2. 每个列表具有相同的元件
  3. 的元素可以被转化成矩阵

编码:

lapply(1:2, function(i)list1[[i]] + list2[[i]])
[[1]]
  x y
1 1 3
2 3 1

[[2]]
  x y
1 1 1
2 2 2


Answer 3:

从理论上讲,你应该能够与组合做unlistrelist ,但它似乎并没有记录在案的工作:

relist(unlist(list1)+unlist(list2),skeleton=list1)
$a
   x    y <NA> <NA> 
   1    3    3    1 

$b
   x    y <NA> <NA> 
   1    2    1    2 


文章来源: Add respective dataframes in list together in R