Проблемы с разрывом для цикла в R - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время у меня проблема с R, не выполняющим мою команду прерывания.

Вот мои два входа:

  1. Элементы не должны быть больше 16, но возвращаются два элемента больше 16:

    for (ndx in calc:length(b)) {
      print(calc) 
      if(calc >16) {break}
    
  2. Для этого я не должен получать элементы в моем цикле> 50 и <6, но все равно получаю их: </p>

    for(ndx in a){
      print (a^2)
      if (a>50 && a<6) {next}}
    

Может кто-нибудь сказать мне, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Для первой замены переменных более общими именами (я предполагаю, что calc является целым числом, в противном случае оператор : не должен работать в любом случае)

for (i in j:k) {
   print(j) 
   if (j>16) break
}

Обратите внимание, что значение j не изменяется во время цикла (индексная переменная i никогда не используется в цикле, и никакие переменные не изменяются в цикле, поэтому ничто не изменяется из-за тела цикла, за исключением переменной index). Таким образом, если j>16, он будет напечатан ровно один раз (при условии, что length(j:k) равно как минимум 1). В противном случае цикл никогда не прервется и j будет напечатан length(j:k) раз.

Может

for (i in j:k) {
   print(i) 
   if (i>16) break
}

это то, что вы имели в виду ??

0 голосов
/ 05 июля 2018

Сначала вы делаете безусловный print, затем проверяете условие. Конечно, вы должны проверить условие в первую очередь, перед печатью?

...