2012-03-23 5 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

+0

@BenBarnes:キャラクター。 – liori

+0

私は短期記憶が悪いことを忘れました。 'analysis(" VariableX ")' – BenBarnes

答えて

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

+0

+1「FML」の偶発的使用について –

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

ANOVAオブジェクトは、その "回答" を運びます。 @kohskeのように、 'data'引数をlmに使用することをお勧めします。

関連する問題