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

时间:2015-11-24 17:06:52

标签: r list vector sum

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

我得到了一个矢量列表,让我们说

myListOfVector <- list(
     c(1,2), 
     c(1,2), 
     c(1,2), 
     c(1,2)
)

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

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

我寻求的是那样的东西

result <- sum(myListOfVector)
# result must be c(4, 8)

有人有想法吗?

我能够做到的唯一方法是使用循环,但是我花了很多时间才能辞职。

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

精度: 向量列表由我无法修改的函数返回 如果可能,我需要一个有效的解决方案

2 个答案:

答案 0 :(得分:8)

相同长度的向量列表可以与Reduce(`+`, myListOfVector)

相加
matrix

如@AnandaMahto和@JanLuba所述,将其置于colSums并使用rowSumslist,在某些情况下可能会更快;我不确定。

旁注。 OP中的示例不是myListOfVector <- list( # ... changing c to list on this line c(1,2), c(1,2), c(1,2), c(1,2) ) ;相反,它应该像

一样构造
ID

答案 1 :(得分:0)

首先应将列表转换为矩阵:

mymatrix=matrix(myListOfVector,ncol=2,byrow=T)

然后使用colSums:

colSums(mymatrix)

最佳, 扬