我刚刚开始做一些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,但他们似乎没有像我想要的那样工作,因为我所拥有的只是一次一个载体。
精度: 向量列表由我无法修改的函数返回 如果可能,我需要一个有效的解决方案
答案 0 :(得分:8)
相同长度的向量列表可以与Reduce(`+`, myListOfVector)
:
matrix
如@AnandaMahto和@JanLuba所述,将其置于colSums
并使用rowSums
或list
,在某些情况下可能会更快;我不确定。
旁注。 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)
最佳, 扬