2010-09-28 27 views
12

Tengo una lista de aproximadamente 1000 enteros enteros. Necesito poder hacer algunos cálculos matemáticos, pero están atrapados en forma de lista o personaje. ¿Cómo puedo cambiarlos para que se puedan usar?Lista a entero o doble en R

datos de la muestra:

> 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" ... 

sólo el primer par de líneas.

+2

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

Respuesta

20

Ver no listados:?

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

[[2]] 
[1] "2" 

[[3]] 
[1] "3" 


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

> y 
[1] 1 2 3 

Si esto no resuelve su problema, por favor especifique qué es exactamente lo que quiere hacer.


edición: Es aún más simple, aparentemente:

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

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


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

> y 
[1] 1 2 3 
+0

Agradable, la unlist con el as.numeric() funcionó perfectamente. ¡¡Gracias!! – user446667

+0

En cuanto a la edición: no es una lista de caracteres. Esa es una lista con un elemento; ese elemento pasa a ser un vector. –

+0

@Dirk Lo sé, pero es la estructura proporcionada por el OP. De hecho, debería cambiar mi código inicial para reflejar la naturaleza del personaje. - lo que hice ahora. –

1

Prueba esto - la combinación de as.numeric() y 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? ¿Qué pasa con la desinstalación? do.call me parece un exceso excesivo ... –

+0

Fuerza de la costumbre ... –

+1

lol. Estoy muy contento de que tengas ese hábito ;-) –

Cuestiones relacionadas