Come riparare in r: la sostituzione ha lunghezza zero


Un errore che potresti riscontrare in R è:

 Error in x[1] = x[0]: replacement has length zero

Questo errore si verifica quando si tenta di sostituire un valore in un vettore con un altro valore che “ha lunghezza zero”, ovvero non esiste.

Questo tutorial spiega esattamente come correggere questo errore.

Come riprodurre l’errore

Supponiamo di creare il seguente vettore con 10 valori in R:

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Supponiamo ora di provare a utilizzare il seguente ciclo for() per moltiplicare ciascun valore nel vettore per il valore precedente:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

Riceviamo l’errore ” la sostituzione ha lunghezza zero ” perché nel primo ciclo tentiamo di eseguire la seguente moltiplicazione:

  • dati[1] * dati[0]

Poiché gli indici R iniziano da 1, il valore data[0] semplicemente non esiste.

Possiamo verificarlo provando a stampare il valore situato nella posizione 0 nel vettore:

 print (data[0])

numeric(0)

Il risultato è un vettore digitale di lunghezza 0 – in altre parole, non esiste.

Come correggere l’errore

Il modo per correggere questo errore è semplicemente utilizzare un ciclo for() che non tenta di accedere a un valore del vettore che non esiste.

Nel nostro esempio, potremmo correggere questo errore avviando il ciclo for dalla posizione dell’indice 2 anziché dalla posizione 1:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

Tieni presente che non riceviamo un errore perché non abbiamo mai tentato di accedere a una posizione di indice nel vettore che non esiste.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere il problema: la condizione ha lunghezza > 1 e verrà utilizzato solo il primo elemento
Come risolvere il problema: la sostituzione ha X righe, i dati hanno Y
Come risolvere: argomento non numerico dell’operatore binario
Come risolvere il problema: dim(X) deve avere una lunghezza positiva
Come risolvere: errore nella selezione degli argomenti non utilizzati

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *