多重比较之后要用字表标出各个水平的显著性标记,由于组别比较多,人工标记太繁琐。R 中有没有什么函数可以将这个工作自动化啊?

昨天看了一下 zwdbordeaux 的帖子(http://cos.name/cn/topic/12277),将显著性标记这部分内容梳理了一下,代码如下:

library(agricolae) #给出 LSD.test() 函数<br />
library(MASS) #给出 cabbages 数据,别无它用<br />
aov1 <- by(data = cabbages, INDICES = cabbages$Cult,<br />
           FUN = function(df) aov(HeadWt ~ Date, data = df)) #分组对某个变量进行方差分析,前期应该排除该分组与该变量没有交互作用<br />
mul <- lapply(aov1, FUN = function(model) LSD.test(y = model, trt = c("Date"), group = TRUE, console = FALSE)) #分组标记显著性<br />
lapply(mul, function(result) result$groups) #给出分组标记显著性结果


字母标记后的结果非常简洁,结果如下:
$c39<br />
  trt means M<br />
1 d16  3.18 a<br />
2 d20  2.80 a<br />
3 d21  2.74 a</p>
<p>$c52<br />
  trt means M<br />
1 d20  3.11 a<br />
2 d16  2.26 b<br />
3 d21  1.47 c
</p>

哪位高手能够把上面的流程编程一个函数啊?我编了一个,调用总是出错,说找不到变量。

<br />
mul.test <- function(data, groups, compare, value_var, alpha) {<br />
  library(agricolae)<br />
  aov1 <- by(data = data, INDICES = groups,<br />
             FUN = function(df) aov(value_var ~ compare, data = df))<br />
  mul <- lapply(aov1, function(model) LSD.test(model, trt = quote(comopare),<br />
                                               group = TRUE, alpha = alpha))<br />
  mul.result <- lapply(mul, function(result) result$groups)<br />
  mul.result<br />
}<br />


大家帮我看一下呢!
</p>
5 天 后