R和向量列表中的元素X.

Inc*_*ito 2 r sum list vector

我刚刚开始做一些R脚本,我无法弄清楚这个问题.

我得到了一个矢量列表

myListOfVector <- list(
     c(1,2), 
     c(1,2), 
     c(1,2), 
     c(1,2)
)
Run Code Online (Sandbox Code Playgroud)

我想要的是我的列表中每个向量的每个X元素的总和基于元素的位置,这样如果我有3个包含(a,b,c)的向量,我将获得每个向量的总和,每个b和列表或向量中的每个c

我知道每个向量都是相同的长度

我寻求的就是那样的东西

result <- sum(myListOfVector)
# result must be c(4, 8)
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?

我能够做到的唯一方法是使用一个循环但是我花了很多时间才能做到这一点.

我尝试了一些申请和lapply,但他们似乎没有像我想要的那样工作,因为我拥有的只是一次一个向量.

精度:矢量列表由我无法修改的函数返回我需要一个有效的解决方案

Fra*_*ank 11

相同长度的向量列表可以与Reduce以下内容相加:

Reduce(`+`, myListOfVector)
Run Code Online (Sandbox Code Playgroud)

如@AnandaMahto和@JanLuba所述,将它放入matrix并使用colSums或者rowSums在某些情况下可能更快; 我不确定.


旁注.OP中的例子不是list; 相反,它应该被构造成

myListOfVector <- list( # ... changing c to list on this line
     c(1,2), 
     c(1,2), 
     c(1,2), 
     c(1,2)
)
Run Code Online (Sandbox Code Playgroud)

  • 如果它已经在`list`中,那么可能没有任何性能优势.`colSums`方法甚至可能更慢,因为你必须首先将列表转换为矩阵.... + 1 (2认同)