如果a
是方差分析表对象,则attr(a,"heading")
确实包含您要查找的信息,但我想不出一种提取它的好方法。所以我查找了 的代码anova.glm
,它引导我找到了 的代码,anova.lmlist
以弄清楚他们是如何将这些信息放入标题中的。这启发了以下解决方案:
# fake data
x <- 1:10
y <- x+ rnorm(10)
# two models
m1 <- glm(y~x)
m2 <- glm(y~x+I(x^2))
a <- anova(m1, m2) # anova object to be printed
# get model formulas
flas <- sapply(list(m1,m2), function(x)paste(deparse(x$formula)))
rownames(a) <- flas # add formulas as rownames
# convert to latex
xtable(a)
编辑以适应长公式:
如果您有长公式,则需要进行两项更改:首先我们必须确保deparse
不会将其分成几行,然后我们需要制作乳胶以将公式包装在表格中。第一个可以通过使用cutoff.width
deparse 的参数来实现,第二个可以通过使用p{width}
latex 中的列类型来实现。例如:
# add long formula
m2$formula <- freq ~ sex + attend + birth + politics + sex:attend + sex:birth +
sex:politics + attend:birth + attend:politics + birth:politics +
sex:attend:birth + sex:attend:politics + sex:birth:politics +
attend:birth:politics
a <- anova(m1, m2)
# use a large width
flas <- sapply(list(m1,m2),
function(x)paste(deparse(x$formula, cutoff.width=500)))
rownames(a) <- flas # add formulas as rownames
# convert to latex with first column wrapped in a 5cm wide parbox
xtable(a, align="p{5cm}rrrr")
结果不是很漂亮,但你的公式也不是很漂亮。在这种特殊情况下,我会使用(sex + attend + birth + politics)^3
- 理解要点并且要短得多。