2017-11-27 10 views
0

In R, Sagen wir, ich habe ein LargeList genannt l mit 200 Elementen, wobei jedes von ihnen ist ein S3 dataframe mit 1.000-10.000 Zeilen, mit dem Namen PersonXXX.Pass jedes Element von einer großen Liste in R zu einer Funktion

Nun möchte ich jedes Element (das ist jede PersonXXX) in l in eine Funktion fungeo(data.frame) genannt übergeben. Für die jede der fungeo(PersonXXX) wird eine andere S4:SpatialPointDataFrame produzieren. Durch rohe Gewalt kann ich 200 maltun, aber es scheint nicht intuitiv. So versuchte ich, eine for-Schleife zu schreiben, die wie folgt aussieht:

die zwei Probleme haben. Zunächst lief es eigentlich nie. Ich halte diese Fehlermeldung bekommen:

Error in p[[i]] <- fungeo(l[[i]]) : 
    more elements supplied than there are to replace 

Zwei, ich möchte mit jedem Element meiner neuen Largelist von S4 Datenrahmen erhalten konsequent mit dem personID genannt, sagen wir mal p.XXX die S4 Transformation des einfachen S3 Datenrahmen PersonXXX ist.

Gibt es eine Möglichkeit, dass ich das tun kann? Jede Hilfe wird unglaublich hilfreich sein!

+4

Probieren Sie 'p <- lapply (s, fungo)'. –

+0

lernen über lapply, anwenden, sapply. Sehr einfach und wichtig. –

+0

@KarstenW. Das war großartig! Vielen Dank! –

Antwort

0

Sie könnten versuchen, entweder die „anwenden“ Familie Funktion oder „Karte“ Funktion aus „purrr“ -Paket, die die gleiche Arbeit tun sollten, aber diese konnte man viel schneller sein, wenn sie mit großen Datenmenge arbeiten

lapply(s, fungeo) 
map(s,fungeo) 
Verwandte Themen