2016-06-10 5 views
0

Ich möchte eine Schleife in R erstellen, die mir helfen würde, eine Variable nach verschiedenen Filtern zu analysieren. Ich habe eine Filterliste wie folgt erstellt:R: Machen Sie eine Schleife mit verschiedenen Filtern

filters <- list(which(df$age<18), which(df$male=="TRUE"), which(df$age<=5)) 

Das Problem, dass, wenn von dem ersten Filter zum zweiten geht, werden die ursprünglichen Werte der Variablen gewonnen (die in diesem Fall wäre ‚Alter‘ sein)‘ t zurück zu den ursprünglichen Werten und die Endergebnisse sind auf den vorherigen Filter konditioniert.

Gibt es eine andere Möglichkeit, dies zu tun? Hier

+1

Wenn Sie die Filter zum Filtern verwenden, dann gibt es in der Regel kein Grund, 'which' zu verwenden. –

+0

was wäre die erwartete Ausgabe? verschiedene 'data.frames'? –

+0

Ja, das wäre es! – mreze

Antwort

0

ist ein Prototyp dessen, was ich glaube, Sie versuchen zu erreichen:

myOutput <- list() 

for(i in seq_along(filters)) { 
    # get filtered vector 
    myVec <- df[filters[[i]], "myVecName"] 

    # perform some analysis on myVec 
    myOutput[[i]] <- summary(myVec) 
} 

Die Ergebnisse der Analyse dann in einer Liste gespeichert werden genannt myOutput.

Sie könnten das gleiche mit lapply erreichen:

myOutput <- lapply(filters, function(i) summary(df[i, "myVecName"])) 
Verwandte Themen