我正在整理迭代,并在R for Data Science(http://r4ds.had.co.nz/iteration.html)中进行了一些循环练习。我将此for循环编写为模仿“墙上有99瓶啤酒”:
number <- 99:0
for (i in number) {
print(paste(number, "bottles of beer on the wall"))
}
这会重复几次然后停止,我不清楚为什么会发生这种情况?
更新
上面的99:0并不等于99,它将将产生预期的结果。我的代码存在的问题是未按照下面的答案中所述正确索引它。
答案 0 :(得分:7)
我认为您想在循环中使用i
,而不是number
number <- 99:0
for (i in number) {
print(paste(i, "bottles of beer on the wall"))
}
答案 1 :(得分:3)
编辑:@bobbel首先是:-)
您需要在循环中print(i)
,而不是print(number)
。后者是全部个数字的向量,因此重复了很多次。
[1] "5 bottles of beer on the wall"
[1] "4 bottles of beer on the wall"
[1] "3 bottles of beer on the wall"
[1] "2 bottles of beer on the wall"
[1] "1 bottles of beer on the wall"
number <- 5:1
for (i in number) {
print(paste(i, "bottles of beer on the wall"))
}
答案 2 :(得分:2)
如前所述,由于您忘记在循环中为索引编号,因此将重复100次。你不是说...
for (i in number) {
print(paste(number[99-i], "bottles of beer on the wall"))
}
答案 3 :(得分:1)
如果您想要更简洁的版本,请使用map_dbl()
中的purrr
map_dbl(99:1,print(paste(99:1,'bottles of beer on the wall')))
这确实返回错误:Error: Result 1 is not a length 1 atomic vector
,但是您肯定会计算出99次重复!