2010-09-24 7 views
9

Usando ejemplo conjunto de datos incorporado ToothGrowth de R, esto funciona:Cómo usar variables de cadena para crear una lista de variables para ddply?

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

pero me gustaría tener los factores subconjuntos sean las variables, algo así como

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

que no funciona. ¿Cómo debe hacerse esto?

pensé que tal vez algo como esto:

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

Pero tampoco funciona. Creo que estoy cerca, pero no estoy seguro de la forma correcta de hacerlo. Supongo que todo el comando se puede poner en una cadena, seguido de una llamada a la cadena eval(), pero ¿hay alguna forma más elegante?

Respuesta

7

Probar:

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

gracias! y para utilizar exactamente el formato que estaba preguntando, la primera línea sería: x <- c (factor1, factor2) –

+0

¡No hay problema! ddply es piadoso, una vez que lo obtienes puedes hacer prácticamente lo que quieras. –

+0

Agradable. ¿Puedes hacer el mismo truco con la alteración de variables? Supongamos que tiene 'x <- c (" supp ")' y quiere la media agrupada de len y V1. –

Cuestiones relacionadas