我是R的新手,因此在C和Python中看起来不错的东西在R中令人惊讶地崩溃了。
我正在尝试计算前1000个斐波纳契数的乘积。这是完整的代码:
#PRRODUCT OF FIBONACCI NUMBERS
Fibonacci<-rep(0, 1000)
Fibonacci[0]<-1
Fibonacci[1]<-1
Product<-1
for (i in 2:1000)
{
Fibonacci[i]<-(Fibonacci[i-1])+(Fibonacci[i-2])
Product<-Fibonacci[i]*Product
}
Fibonacci[1000]
Product
这将返回以下错误:
Error in Fibonacci[i] <- (Fibonacci[X - 1]) + (Fibonacci[X - 2]) :
replacement has length zero
我倾向于认为我对数组的不同元素有误解(也许矢量描述中的i-2不正确),但是在过去的一个半小时里我没有发现任何东西可以帮助我纠正它。
因此,对于造成问题的原因的任何见解都将受到极大的赞赏。
先感谢您。
最佳答案
R中的数组基于1。
Fibonacci[1]<-1
Fibonacci[2]<-1
Product<-1
for (i in 3:1000)
{
(其余与您的问题相同)
问题是
Fibonacci[0]
,它是一个长度为0的数字。当为i = 2
时,此表达式的右侧为numeric(0)
:Fibonacci[i]<-(Fibonacci[i-1])+(Fibonacci[i-2])
关于r - R中的for循环简单,在R中产生 "replacement has length zero",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665164/