2010-09-28 10 views
12

Ho una lista di circa 1000 numeri interi singoli. Devo essere in grado di fare alcuni calcoli matematici, ma sono bloccati nella lista o nella forma del personaggio. Come posso cambiarli in modo che siano utilizzabili?Elenco a numero intero o doppio in R

dati di esempio:

> y [[1]] 
    [1] "7" "3" "1" "6" "7" "1" "7" "6" "5" "3" "1" "3" "3" "0" "6" "2" "4" "9" 
    [19] "1" "9" "2" "2" "5" "1" "1" "9" "6" "7" "4" "4" "2" "6" "5" "7" "4" "7"  
    [37] "4" "2" "3" "5" "5" "3" "4" "9" "1" "9" "4" "9" "3" "4" "9" "6" "9" "8" 
    [55] "3" "5" "2" "0" "3" "1" "2" "7" "7" "4" "5" "0" "6" "3" "2" "6" "2" "3" 
    [73] "9" "5" "7" "8" "3" "1" "8" "0" "1" "6" "9" "8" "4" "8" "0" "1" "8" "6" ... 

solo il primo paio di righe.

+2

Prova 'as.numeric (y [[1]]) ' –

risposta

20

See non elencati:?

> x 
[[1]] 
[1] "1" 

[[2]] 
[1] "2" 

[[3]] 
[1] "3" 


> y <- as.numeric(unlist(x)) 

> y 
[1] 1 2 3 

Se questo non risolve il problema, si prega di specificare che cosa si vuole fare.


Modifica: E 'ancora più semplice in apparenza:

> x <- list(as.character(1:3)) 

> x 
[[1]] 
[1] "1" "2" "3" 


> y <-as.numeric(x[[1]]) 

> y 
[1] 1 2 3 
+0

Bello, il non elenco con as.numeric() ha funzionato perfettamente. Grazie!! – user446667

+0

Riguardo alla modifica: non è un elenco di caratteri. Questa è una lista con un elemento; quell'elemento sembra essere un vettore. –

+0

@Dirk Lo so, ma è la struttura fornita dall'OP. In effetti, dovrei cambiare anche il mio codice iniziale per riflettere la natura del personaggio. - cosa che ho fatto ora. –

1

Prova questo - che unisce as.numeric() e rbind():

> foo <- list("2", "4", "7") 
> foo 
[[1]] 
[1] "2" 

[[2]] 
[1] "4" 

[[3]] 
[1] "7" 

> bar <- do.call(rbind, lapply(foo, as.numeric)) 
> bar 
    [,1] 
[1,] 2 
[2,] 4 
[3,] 7 
> 
+2

eh? cosa c'è di sbagliato con unlist? do.call sembra serio overshoot per me ... –

+0

Forza dell'abitudine ... –

+1

lol. Sono molto felice che tu abbia questa abitudine, però ;-) –

Problemi correlati