在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,即使在打印结果变量后,我也不明白为什么。
答案 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