R中的循环简单,在R中生成“替换长度为零”

时间:2013-07-15 22:43:31

标签: r for-loop

我是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不正确),但我在过去的一个半小时内没有找到任何东西帮助我纠正它。 因此,对问题原因的任何见解都将非常受欢迎。

提前谢谢。

1 个答案:

答案 0 :(得分:16)

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])