我正在尝试用R编写我的第一个函数,希望对您有所帮助。
作为一名研究人员,每年进行2到3次实验,我经常不得不比较使用anova
的治疗方法。我正在尝试自动化方差分析以返回带有结果的列表,包含均值,n和sd的数据框以及用于比较我的治疗的Tukey测试。
到目前为止,我有以下代码:
# Function
Tt.aov <- function(vx, vtreat)
{
VarAov <- aov(vx~vtreat)
VarAnova <- anova(VarAov)
p <- VarAnova$Pr[1]
stats <- aggregate(vx, by=list (Treat=vtreat),
FUN=function(x) c(mean=mean(x), sd=sd(x), n=length(x)))
#stats <- do.call(data.frame, stats)
if (p<0.05) {Tuk <- TukeyHSD(VarAov)};
aov.output <- list(anova=VarAnova,stats=stats,p=p)
print(aov.output)
}
现在,我的功能在1种治疗中效果很好(vtreat
)。问题是,如何使我的函数保持打开状态以添加更多的处理方法,比如说vx~vtraet1+vtreat2+vtreat3
或vx~vtreat1*vtreat2
之类的东西,同时又可以将该参数用于stats数据框?
我可以做两个或三个足以满足我的实验需求的函数,但是我真的很想了解和学习在R中使用函数和公式的过程。