Eenvoudige for-lus in R die vervanging heeft lengte nul produceert in R

Ik ben een beginneling in R, en dus wat prima leek te werken in C en Python, valt verrassend genoeg uiteen in R.
Ik probeer het product van de eerste 1000 Fibonacci-getallen te berekenen. Hier is de volledige code:

#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

Dit geeft de volgende fout:

Error in Fibonacci[i] <- (Fibonacci[X - 1]) + (Fibonacci[X - 2]) : 
  replacement has length zero

Ik ben geneigd te denken dat ik het werken met verschillende elementen van een array verkeerd heb begrepen (misschien is de i-2 in de vectorbeschrijving niet correct), maar ik heb de afgelopen anderhalf uur niets gevonden dat hielp me het te corrigeren.
Dus alle inzichten in de oorzaak van het probleem worden zeer op prijs gesteld.

Bij voorbaat dank.


Antwoord 1, autoriteit 100%

Arrays in R zijn 1-gebaseerd.

Fibonacci[1]<-1
Fibonacci[2]<-1
Product<-1
for (i in 3:1000)
{

(de rest zoals in uw vraag)

Het probleem is Fibonacci[0] wat een numeriek getal van 0 lengte is. Wanneer i = 2, heeft deze uitdrukking een rechterkant van numeric(0):

Fibonacci[i]<-(Fibonacci[i-1])+(Fibonacci[i-2])

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes