2013-07-15 11 views
6

Jestem nowicjuszem w R, a więc to, co wydawało się działać dobrze w C i Pythonie, zaskakująco zepsuje się w R. Próbuję obliczyć produkt pierwszych 1000 numerów Fibonacciego. Oto pełny kod:Prosta pętla w R, która "zamiennik ma długość zero" w R

#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 

ta zwraca następujący błąd:

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

jestem skłonny myśleć, że nie zrozumiałeś pracy z różnych elementów tablicy (chyba I-2 w wektorze opis jest niepoprawny), ale nie znalazłem nic w ciągu ostatniej półtorej godziny, która pomogłaby mi to poprawić. Tak więc wszelkie spostrzeżenia na temat przyczyny problemu będą najbardziej doceniane.

Z góry dziękuję.

+2

Prosta technika debugowanie jest wstawienie 'print (i)' na początku pętli. Powiedziałoby ci, gdzie wystąpił błąd, abyś mógł zrozumieć, na czym polega problem. –

+1

Miałem podobny problem, wziąłem twoją radę, to nie działa, ponieważ otrzymujemy błąd, więc nie ma druku(). – Benzle

Odpowiedz

14

Tablice w R są oparte na 1.

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

(reszta jak na pytanie)

Problemem jest Fibonacci[0] który jest 0 długości numeryczne. Kiedy i = 2, to wyrażenie ma prawą stronę numeric(0):

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

To było to; Zacząłem od 1 i wszystko działało idealnie. Wielkie dzięki! Chociaż 1000. liczba Fibonacciego to 4,3 * 10^208, a iloczyn pierwszego 1000 jest wyświetlany jako "nieskończoność". Myślę, że nie ma wiele do zrobienia, choć ... – user2585222

+0

Dziękuję! Nie mam pojęcia! Kręciłem podobny problem przez 2 godziny, aż w końcu googlowałem i znalazłem to. Ogromna pomoc. – stevenjoe