2012-03-23 26 views
1

我有一個函數爲特定列做了ANOVA(這段代碼被簡化了,我的代碼也對該列做了其他一些相關的事情,並且我爲這個列做了一組計算列,所以它值得一個函數)。 alz是我的數據框。R,以編程方式給出列的名稱

analysis <- function(column) { 
print(anova(lm(alz[[column]] ~ alz$Category))) 
} 

我叫它例如爲:

analysis("VariableX") 

然後在輸出我得到:

Analysis of Variance Table 

Response: alz[[column]] 
       Df Sum Sq Mean Sq F value Pr(>F)  
alz$Category 2 4.894 2.44684 9.3029 0.0001634 *** 
Residuals 136 35.771 0.26302      
--- 
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

如何使輸出顯示的列名,而不是alz[[column]]

+0

你是否希望參數'column'是字符或數字或其他? – BenBarnes 2012-03-23 13:43:37

+0

@BenBarnes:人物。 – liori 2012-03-23 13:48:28

+0

我忘了我有一個糟糕的短期記憶。 '分析(「VariableX」)' – BenBarnes 2012-03-23 14:01:08

回答

9

下面是一個例子:

> f <- function(n) { 
+ fml <- as.formula(paste(n, "~cyl")) 
+ print(anova(lm(fml, data = mtcars))) 
+ } 
> 
> f("mpg") 
Analysis of Variance Table 

Response: mpg 
      Df Sum Sq Mean Sq F value Pr(>F)  
cyl  1 817.71 817.71 79.561 6.113e-10 *** 
Residuals 30 308.33 10.28      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
+0

謝謝,這個工程。 – liori 2012-03-23 13:49:22

+0

+1爲偶然使用「FML」哈哈 – 2012-03-23 13:51:31

1
analysis <- function(column) { 
    afit <- anova(lm(alz[[column]] ~ alz$Category)) 
    attr(afit, "heading") <- sub("\\: .+$", paste(": ", column) , attr(afit, "heading")) 
    print(afit) 
} 

方差分析對象攜帶它的 「響應:」 在名爲的屬性值 「標題」。建議您使用圖示的@kohske的方式使用'數據'參數lm

相關問題