2010-09-24 9 views
9

Utilizzando incorporato ToothGrowth esempio set di dati di R, questo funziona:Come utilizzare le variabili stringa per creare un elenco di variabili per ddply?

ddply(ToothGrowth, .(supp,dose), function(df) mean(df$len)) 

Ma mi piacerebbe avere i fattori di sottoinsiemi siano variabili, qualcosa come

factor1 = 'supp' 
factor2 = 'dose' 
ddply(ToothGrowth, .(factor1,factor2), function(df) mean(df$len)) 

che non funziona. Come dovrebbe essere fatto?

Ho pensato che forse qualcosa di simile:

factorCombo = paste('.(',factor1,',',factor2,')', sep='') 
ddply(ToothGrowth, factorCombo, function(df) mean(df$len)) 

Ma non funziona neanche. Penso di essere vicino, ma non sono sicuro del modo corretto per farlo. Suppongo che l'intero comando possa essere messo in una stringa, seguito da un richiamo eval() della stringa, ma si spera che ci sia un modo più elegante?

risposta

7

Prova:

x <- c("supp", "dose") 
ddply(ToothGrowth, x, function(df) mean(df$len)) 
+0

grazie! e per usare esattamente il formato che stavo chiedendo, la prima riga sarebbe: x <- c (factor1, factor2) –

+0

Nessun problema! ddply è divino, una volta capito puoi fare praticamente tutto quello che vuoi. –

+0

Bello. Puoi fare lo stesso trucco con l'alterazione delle variabili? Supponi di avere 'x <- c (" supp ")' e vuoi la media raggruppata di len e V1. –

Problemi correlati