2011-07-27 33 views
0

比方說,我在讀該變量,data如何從Python透視圖遍歷R中的變量?

data.orange.lm = lm(...) 
data.orange.avg = mean(...) 
data.orange.sd = sd(...) 
data.pear.lm = lm(...) 
data.pear.sd = sd(...) 
... 
data.plum.sd = sd(...) 
data.plum.summary = summary(lm(...)) 

如何以編程遍歷data?在Python iteritems中爲dictionary將爲您提供密鑰和相應的值。是否有R等同物?

回答

1

存儲所有嵌套列表:

data[["orange"]][["lm"]] = lm(...) 
data[["orange"]][["avg"]] = mean(...) 
data[["orange"]][["sd"]] = sd(...) 
data[["pear"]][["lm"]] = lm(...) 
data[["pear"]][["sd"]] = sd(...) 

然後使用apply家庭命令。

+0

現在讀了'apply'東西。所以我應該將所有的動作(即輸出到圖表,文件,表格等)包含在函數中,然後將這些項目(即lm,mean,sd等)應用到函數中? – c00kiemonster

+0

@ c00kiemonster,你希望你的對象在列表中,你可以使用apply family來訪問它。這個函數族的一個參數是(自定義)函數。你可以通過閱讀lm,avg,sd來編寫這個自定義函數......實際上,一個'lapply'函數將遍歷橙色和梨,並且在你的函數中,你將有lm,avg和sd可用做任何事情。 –

+0

@ c00kiemonster:這就是主意。羅馬給了你更多的細節。基本上你正在應用的函數將有權訪問一個對象(稱爲x),它是一個長度爲三的名稱爲「lm」,「avg」和「sd」的列表。然後你可以做任何你喜歡的清單(包括再次申請!)。我傾向於使用易用,但如果您不小心,它會簡化默認會導致麻煩。 –

0

對於有點像這樣的數據:

data <- data.frame(
    fruit = rep(c("orange", "pear", "plum"), each = 10), 
    value = rnorm(30) 
) 

可以使用tapply通過水果來獲得統計數據,並sapply遍歷功能。

fns <- c("mean", "sd") 
stats <- sapply(fns, function(f) with(data, tapply(value, fruit, f))) 

(如果你的一些函數不返回一個數字,然後用lapply而非sapply。)