2010-09-28 5 views
12

J'ai une liste d'environ 1000 entiers simples. Je dois être capable de faire des calculs mathématiques, mais ils sont bloqués sous forme de liste ou de personnage. Comment puis-je les changer pour qu'ils soient utilisables?Liste à nombre entier ou double dans R

échantillon de données:

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

Juste les deux premières lignes.

+2

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

Répondre

20

Voir unlist:

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

[[2]] 
[1] "2" 

[[3]] 
[1] "3" 


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

> y 
[1] 1 2 3 

Si cela ne résout pas votre problème, s'il vous plaît préciser ce que vous voulez faire exactement.


modifier: Il est encore plus simple en apparence:

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

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


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

> y 
[1] 1 2 3 
+0

Nice, la liste avec le as.numeric() a parfaitement fonctionné. Merci!! – user446667

+0

En ce qui concerne l'édition: ce n'est pas une liste de caractères. C'est une liste avec un élément; cet élément arrive à être un vecteur. –

+0

@Dirk Je sais, mais c'est la structure fournie par l'OP. En fait, je devrais aussi changer mon code initial pour refléter la nature du personnage. - que j'ai fait maintenant. –

1

Essayez ceci - combinant as.numeric() et 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

hein? Quel est le problème avec unlist? Do.call semble sérieux dépassement de moi ... –

+0

Force de l'habitude ... –

+1

lol. Je suis très heureux que vous ayez cette habitude cependant ;-) –

Questions connexes