【发布时间】:2019-02-11 10:05:24
【问题描述】:
我是 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 条件有问题吗?还是有其他方法可以做到这一点?
【问题讨论】:
-
您能否编辑您的帖子并使预期的输出更易于阅读?
-
我想知道它会打印什么,因为您从未在代码中定义日期...
-
它无法打印数字 360,因为当数字大于 355(如果步长为 10)时,您的 if 语句 if(number + steps > 365) 会触发。
-
我已经编辑了我的输出,希望它现在清楚了。
-
即使我将步长更改为 2,它也不会返回 10、12、14 等输出,直到达到 360,然后应该打印 2、4... 直到 8。但这里再次打印 358 但跳过 360 并移动到 2
标签: r for-loop if-statement