Суммируйте все элементы в матрице, используя цикл - PullRequest
0 голосов
/ 11 сентября 2018

В R у меня есть матрица 5x5 с именем P, например:

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 голосов
/ 11 сентября 2018

Не уверен, почему вы хотите это сделать, но мы можем использовать 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 loop

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...