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

Aggiungi un commento

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