r - 添加两个列表的所有元素

标签 r

假设我有两个列表,并且列表中的相应元素具有相同的形状:

 e1=list(1,c(1,2,3),matrix(1:12,3,4))
 e2=list(1,c(1,2,3),matrix(1:12,3,4))

我想逐个元素添加这两个列表。这是我的解决方案,适用于任何长度的列表和任何形状的元素,只要它们匹配且可加:
> esum
function(e1,e2){
  e = list()
  for(i in 1:length(e1)){
    e[[i]]=e1[[i]]+e2[[i]]
  }
  e
}
> esum(e1,e2)

但是这看起来很丑陋,而且可能是一种单行代码即可完成的事情。

这是问题的第一阶段,实际上是将这些列表中的许多列表加起来,但是一旦定义了esum,它就只能减少:
 > ee = list(e1,e2,e1,e1,e2)
 > Reduce(esum,ee)[[3]]  # lets just check [[3]] for now
      [,1] [,2] [,3] [,4]
 [1,]    5   20   35   50
 [2,]   10   25   40   55
 [3,]   15   30   45   60

那么,有人为此提供一线服务吗?

是的,我知道单线并不总是最好的东西。

最佳答案

就像是

   mapply("+",e1,e2)

适用于第一部分...
Reduce( function(x,y) mapply("+",x,y),ee)[[3]]

甚至可能会有一些闪烁。 Reduce不采用...参数,因此我们无法摆脱Reduce(mapply,ee,FUN="+")[[3]]

关于r - 添加两个列表的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903325/

相关文章:

在 R 中复制矩阵的行

r - Purrr ~ 操作符记录在哪里?

r - 在 R 中使用向量索引命名列表

r - 有没有办法将 R 中的线性回归摘要导出为图像?我需要将摘要导出为 .jpeg 或 .png

mysql - R 和 MySQL 的编码问题

r - 在 x 轴上绘制带有标签的图

r - 使用 r 修改带连字符的数据

r - 使用 ETS 进行预测会产生意想不到的常数值

r - 为什么在Rmarkdown::render中docx和html之间的绘图大小不同?

r - 在 R Markdown 中将 str(...) 显示为表格