a
が anova テーブル オブジェクトである場合、探し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)
長い数式に対応するための編集: 長い数式
がある場合は、2 つの変更が必要です。まず、数式が複数のdeparse
行に分かれていないことを確認する必要があります。次に、表内の数式をラップするためにラテックスを作成する必要があります。cutoff.width
1 つ目は deparseの引数を使用して実現でき、2 つ目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
- ポイントを横切って取得し、はるかに短くします。