Come risolvere il problema: non è possibile forzare l'oggetto (elenco) a digitare "double";
Un errore comune che potresti riscontrare in R è:
Error: (list) object cannot be coerced to type 'double'
Questo errore si verifica quando si tenta di convertire un elenco di più elementi in elementi numerici senza prima utilizzare la funzione unlist() .
Questo tutorial condivide i passaggi esatti che puoi utilizzare per risolvere questo errore.
Come riprodurre l’errore
Il codice seguente tenta di convertire un elenco di più elementi in valori numerici:
#create list x <- list(1:5, 6:9, 7) #display list x [[1]] [1] 1 2 3 4 5 [[2]] [1] 6 7 8 9 [[3]] [1] 7 #attempt to convert list to numeric x_num <- as. numeric (x) Error: (list) object cannot be coerced to type 'double'
Poiché non abbiamo utilizzato la funzione unlist() , abbiamo ricevuto il messaggio di errore (list) non può essere forzato a digitare “double” .
Come correggere l’errore
Per convertire l’elenco in numerico, dobbiamo assicurarci di utilizzare la funzione unlist() :
#create list x <- list(1:5, 6:9, 7) #convert list to numeric x_num <- as. numeric (unlist(x)) #display numeric values x_num [1] 1 2 3 4 5 6 7 8 9 7
Possiamo usare la funzione class() per verificare che x_num sia effettivamente un vettore di valori numerici:
#verify that x_num is numeric
class(x_num)
[1] "digital"
Possiamo anche verificare che la lista originale e la lista numerica abbiano lo stesso numero di elementi:
#display total number of elements in original list sum(lengths(x)) [1] 10 #display total number of elements in numeric list length(x_num) [1] 10
Vediamo che le due lunghezze corrispondono.
Risorse addizionali
I seguenti tutorial spiegano come risolvere altri errori comuni in R:
Come risolvere il problema in R: i nomi non corrispondono ai nomi precedenti
Come risolvere in R: i contrasti possono essere applicati solo a fattori con 2 o più livelli
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto