R中列表的两个列表的总和

Jet*_*tse 12 r sum list

有一种简单的方法可以在列表列表中进行简单的计算吗?

x <- list(a=list(1:4),b=list(1:6))
y <- list(a=list(1:4),b=list(1:6))
Run Code Online (Sandbox Code Playgroud)

当我尝试:

x+y
Run Code Online (Sandbox Code Playgroud)

我收到错误:x + y错误:二元运算符的非数字参数

X和y的长度相等,只包含整数.使用矩阵可以执行y + x,有没有办法对列表列表执行此操作?

Ric*_*rta 10

假设每个列表具有相同的结构,您可以使用mapply如下

  mapply(function(x1, y1) x1[[1]]+y1[[1]], x, y)
Run Code Online (Sandbox Code Playgroud)

  • @Jetse尝试添加`SIMPLIFY = FALSE`. (3认同)

ags*_*udy 10

您可以使用lapply同时浏览每个2个列表.

 lapply(seq_along(x),function(i)
         unlist(x[i])+unlist(y[i]))

[[1]]
a1 a2 a3 a4 
 2  4  6  8 

[[2]]
b1 b2 b3 b4 b5 b6 
 2  4  6  8 10 12 
Run Code Online (Sandbox Code Playgroud)

如果x和y的长度不同,则可以这样做:

 lapply(seq_len(min(length(x),length(y)),function(i)
         unlist(x[i])+unlist(y[i]))
Run Code Online (Sandbox Code Playgroud)