2017-10-23 5 views
0

Ich bin kein Experte lapply verwenden, gelten usw. Also, was ich habe, ist die nächste ListeWie verwendet man eine Funktion für alle in R Liste?

my_list 
[[1]] 
[1] "40.394081 -3.7083041" 

[[2]] 
[1] "40.3960251 -3.7116921" 

[[3]] 
[1] "40.3938449 -3.7071731" 

[[4]] 
[1] "40.3935099 -3.7121505" 

Und ich will as.numeric an jedem Eingang von my_list die Funktion verwenden. Ich meine, wandle jeden Eintrag der Liste in Zahlen um, behalte aber die Struktur der Liste bei.

Danke.

+0

Going durch Ihre anderen Fragen zu erstellen, ist diese Liste das Ergebnis einer Abfrage an die Google-API durch 'googleway '? – SymbolixAU

Antwort

6

Sie können lapply für diesen Einsatz:

lapply(my_list, function(x) as.numeric(strsplit(x, ' ')[[1]])) 

Hier verwende ich strsplit die Zeichenfolge zu spalten, kurz bevor es Gießen mit as.numeric numerisch. lapply wendet dies auf jedes Element Ihrer Liste an und gibt das Ergebnis zurück.

+0

Sorry, aber es gibt NA's zurück. Ich denke es ist, weil jeder Eingang einer Liste kein Vektor ist. –

+0

Sorry, hatte nicht die Tatsache entdeckt, dass es eine einzelne Zeichenfolge war. Meine Antwort wurde erweitert. –

+0

Es ist in Ordnung, aber benötigt am Ende eine Klammer. Bitte ändern Sie es und ich werde die Antwort gut –

5

Wir scan

my_list2 <- lapply(my_list, function(x) scan(text=x, what = numeric(), quiet = TRUE)) 
str(my_list2) 
#List of 4 
# $ : num [1:2] 40.39 -3.71 
# $ : num [1:2] 40.4 -3.71 
# $ : num [1:2] 40.39 -3.71 
# $ : num [1:2] 40.39 -3.71 

verwenden Es ist nicht klar, ob dies als list oder nicht gespeichert werden soll. Wenn es als data.frame gespeichert werden kann, wäre eine bessere Option sein unlist und verwenden read.table eine zweispaltige data.frame

read.table(text=unlist(my_list), header = FALSE) 
+0

Scan funktioniert wahrscheinlich robuster als meine Lösung mit 'strsplit'. –

+0

@PaulHiemstra Ich denke 'strsplit' sollte schnell sein – akrun

Verwandte Themen