Я пытаюсь написать цикл while, похожий на мой цикл for. Как мне это сделать в R? - PullRequest
0 голосов
/ 14 сентября 2018
for (i in 1:12) {
  if (i %% 2 ==1) print(i)
}

Я написал приведенный выше код, чтобы получить следующий вывод: 1 3 5 7 9 11

Однако я хочу получить тот же вывод, используя цикл while. Как я могу это сделать?

Я попробовал ниже, но это не сработало

while (i == 1:12){
  if (i %% 2 ==1) print(i)
}

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Если i - вектор, попробуйте это:

i=c(1:12)
i[i%%2==1]

Выход:

[1]  1  3  5  7  9 11

Обновлено

for(i in 1:12){
  if(i%%2==1){
    print(i)
     if(i==3){
      print("three")
    }  
  }
 }

Выход:

[1] 1
[1] 3
[1] "three"
[1] 5
[1] 7
[1] 9
[1] 11
0 голосов
/ 14 сентября 2018

Циклы хороши для описанных случаев, но не так хороши для больших проблем.Если вы используете apply / lapply / sapply, то вы также можете воспользоваться пакетом parallel.

unlist(lapply(1:12, function(x) if (x %% 2 == 1) x))

, альтернативно:

c(1:12)[1:12 %% 2 == 1]

также дастты твой ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...