2010-09-28 8 views
12

Mam listę około 1000 pojedynczych liczb całkowitych. Muszę umieć wykonywać obliczenia matematyczne, ale utknęły one w formie listy lub postaci. Jak mogę je zmienić, aby były przydatne?Lista na liczbę całkowitą lub podwójną w R

próbka danych:

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

Wystarczy kilka pierwszych linii.

+2

Spróbuj 'as.numeric (y [[1]]) ' –

Odpowiedz

20

Zobacz wyświetlać na liście:

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

[[2]] 
[1] "2" 

[[3]] 
[1] "3" 


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

> y 
[1] 1 2 3 

Jeśli to nie rozwiąże problemu, należy określić, co dokładnie chcesz zrobić.


edit: To jeszcze prostsze widocznie:

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

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


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

> y 
[1] 1 2 3 
+0

Nice, the unlist z as.numeric() działał idealnie. Dzięki!! – user446667

+0

Odnośnie edycji: to nie jest lista znaków. To jest lista z jednym elementem; ten element staje się wektorem. –

+0

@Dirk Wiem, ale jest to struktura dostarczona przez OP. Właściwie powinienem zmienić również mój początkowy kod, aby odzwierciedlić charakter postaci. - co zrobiłem teraz. –

1

Spróbuj tego - łącząc as.numeric() i 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

huh? co jest nie tak z nielistą? do.call wydaje mi się poważnym przekroczeniem ... –

+0

Siła przyzwyczajenia ... –

+1

lol. Jestem bardzo szczęśliwy, że masz taki nawyk ;-) –

Powiązane problemy