2012-03-23 5 views
1

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

Я забыл, что у меня плохая кратковременная память. 'анализ (« 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» lol –

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

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

Смежные вопросы