R, программно дать название столбца - PullRequest
1 голос
/ 23 марта 2012

У меня есть функция для выполнения ANOVA для определенного столбца (этот код упрощен, мой код также делает некоторые другие связанные с этим столбцом вещи, и я делаю этот набор вычислений для разных столбцов, поэтому он заслуживает функции ). alz - мой фрейм данных.

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]]?

Ответы [ 2 ]

9 голосов
/ 23 марта 2012

Вот пример:

> 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 
1 голос
/ 23 марта 2012
analysis <- function(column) { 
   afit <- anova(lm( alz[[column]] ~ alz$Category))
   attr(afit, "heading") <- sub("\\: .+$", paste(": ", column) , attr( afit, "heading") )
   print(afit)
}

Объект anova несет свое значение "Response:" в атрибуте с именем "heading".Вам бы лучше использовать аргумент 'data' для lm, как показано на рисунке @kohske.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...