Печать чисел в последовательности с заданным условием с использованием оператора if и for - PullRequest
0 голосов
/ 11 февраля 2019

Я новичок в r, и любая помощь будет принята.

Я хочу получить последовательность чисел от 1 до 365 на определенных этапах.Когда мой первый номер начинается с чего-то большего, чем один, я хочу, чтобы мой код печатал число до / до 365 в зависимости от шагов, а затем начинал с 1, пока не достигнет номера, с которого начинал.

firstnumber=20
 steps=10
 lastnumber=0


     if(firstnumber > 1){lastnumber = 365 + firstnumber - (steps)}
     else{lastnumber = 365}

      for(number in seq(firstnumber, lastnumber, steps))
     {
    if(firstnumber > 1)
    { if(number + steps > 365)

    {number = (number + steps - 365)
      }
       }
       print(number)
     }

он должен дать мне

 20, 30, 40, 50, 60, 70, 80,
 90, 100, 110, 120, 130, 140, 150, 160, 170,
 180, 190, 200, 210, 220, 230, 240, 250, 260,
 270, 280, 290, 300, 310, 320, 330, 340,
 350, 360, 5, 15

, но он пропускает 360, который является последним числом, прежде чем он перейдет в начало последовательности. Что-то не так с условием if?или есть другой способ сделать это?

1 Ответ

0 голосов
/ 11 февраля 2019
Оператор по модулю всегда удобен, когда вам нужна последовательность чисел, чтобы «обернуться».
firstnumber = 20
step = 10
limit = 365

seq(firstnumber - 1, limit + firstnumber - 1, step) %% limit + 1
#[1]  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180 190 200 210 220 230
#[23] 240 250 260 270 280 290 300 310 320 330 340 350 360   5  15

Если вместо диапазона от 1 до 365 вы хотите диапазон от 0 до 364, используйте это:

seq(firstnumber, limit + firstnumber, step) %% limit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...