使用循环求和矩阵中的所有元素

时间:2018-09-11 09:28:16

标签: r matrix

在R中,我有一个名为P的5x5矩阵,如下所示:

1  3  0  0  0
0  3  0  0  0
0  3  1  0  0
0  3  0  1  0
0  3  0  0  1

,并希望对其所有元素求和。我知道我可以做sum(P)并得到19。但是我想使用for或while循环来做到这一点。

一个主意是做

result <- 0
for(i in col(P)) { result <- result + sum(i)}

但是,这使我得出总和(result为75,即使在打印结果变量后,我也不明白为什么。

1 个答案:

答案 0 :(得分:4)

不确定,为什么要这样做,但是我们可以使用类似C的循环结构,该结构为每个列和行循环并采用每个元素的sum

result = 0
for (i in 1:ncol(P)) {
  for (j in 1:nrow(P)) {
    result = result + P[i, j]
 }
}

result
#V1 
#19 

具有while循环

i = 1
result = 0
while(i <= length(P)) {
  result = result + P[i]
  i = i + 1
}

result
#[1] 19

@ zx8754建议的另一种选择是将其转换为向量并在每个元素上循环

result = 0
for (i in as.vector(P)) {
  result = result + i  
}

result
#[1] 19