2010-09-24 44 views
9

基於R的內置ToothGrowth例如數據集,這個工程:如何使用字符串變量爲ddply創建變量列表?

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

但我想有子集的因素是變量,像

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

這是行不通的。這應該怎麼做?

我想也許是這樣的:

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

但它也不起作用。我認爲我很接近,但不確定正確的做法。我想整個命令可以放在一個字符串中,接着是字符串的eval()調用,但希望有更優雅的方式嗎?

回答

7

嘗試:

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

的感謝!並準確使用我詢問的格式,第一行應該是:x < - c(factor1,factor2) – 2010-09-24 04:53:59

+0

沒問題! ddply是敬虔的,一旦你得到它,你幾乎可以做任何你想做的事情。 – 2010-09-24 20:48:20

+0

不錯。你可以通過改變變量來做同樣的技巧嗎?假設你有'x < - c(「supp」)'並且想要len和V1的分組平均值。 – 2012-11-08 16:11:50