r - R中的for循环简单,在R中产生 "replacement has length zero"

标签 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不正确),但是在过去的一个半小时里我没有发现任何东西可以帮助我纠正它。
因此,对于造成问题的原因的任何见解都将受到极大的赞赏。

先感谢您。

最佳答案

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/

相关文章:

从矩阵中删除一列

jquery - 我的for循环有什么问题

python - 在当前类中循环调用另一个类函数

c - 对于循环优化?如果如果与如果如果如果

python - 在同一个循环中迭代两个列表

php - 在 for 循环中设置乘法参数

r - 使用向量中的值和名称对数据框进行子集化的简单有效方法

r - 将不均匀出现的以逗号分隔的字符串拆分为列并填充缺失值

r - 使用 `geom_line()`,X 轴为因子

r - 在 native 坐标系中添加网格单位