在LaTeX表格环境中使用\ Sexpr {}

时间:2011-03-10 05:20:27

标签: sweave

我正在尝试使用\Sexpr{}在LaTeX表中包含R对象的值。我基本上试图在R中复制lm对象的摘要输出,因为xtable的内置方法xtable.lmxtable.summary.lm似乎不包括Fstats,调整后的R平方等(R控制台中lm对象的摘要打印输出底部的所有内容)所以我尝试通过构建一个矩阵来复制xtable.summary.lm输出然后为额外的东西构建相关信息的数据框来实现这一点所以我可以使用\Sexpr{}来引用这些值。我尝试使用add.to.row附加\multicolumn{}命令以合并LaTeX表的最后一行的所有列,然后将所需的所有信息传递到表的该单元格中。

问题是我在"Undefined control sequence"表达式中获得\Sexpr{}表达式\multicolumn{}。这两个不相容吗?如果是这样,我做错了什么,如果不是,是否有人知道如何做我想做的事情?

谢谢,

以下是我的代码的相关部分:

<<Test, results=tex>>=

model1 <- lm(stndfnl ~ atndrte + frosh + soph)

# Build matrix to replicate xtable.summary.lm output

    x <- summary(model1)
    colnames <- c("Estimate", "Std. Error", "t value", "Pr(<|t|)")
    rownames <- c("(Intercept)", attr(x$terms, "term.labels"))
    fpval <- pf(x$fstatistic[1],x$fstatistic[2], x$fstatistic[3], lower.tail=FALSE)
    mat1 <- matrix(coef(x), nrow=length(rownames), ncol=length(colnames), dimnames=list(rownames,colnames))

# Make a data frame for extra information to be called by \Sexpr in last row of table
    residse <- x$sigma
    degf <- x$df[2]
    multr2 <- x$r.squared
    adjr2 <- x$adj.r.squared
    fstat <- x$fstatistic[1]
    fstatdf1 <- x$fstatistic[2]
    fstatdf2 <- x$fstatistic[3]

    extradat <- data.frame(v1 = round(residse,4), v2 =degf, v3=round(multr2,4), v4=round(adjr2,4),v5=round(fstat,3), v6=fstatdf1, v7=fstatdf2, v8=round(fpval,6))   

    addtorow<- list()
    addtorow$pos <-list()
    addtorow$pos[[1]] <- dim(mat1)[1]
    addtorow$command <-c('\\hline \\multicolumn{5}{l}{Residual standard error:\\Sexpr{extradat$v1}} \\\\ ')

    print(xtable(mat1, caption="Summary Results for Regression in Equation  \\eqref{model1} ", label="tab:model1"), add.to.row=addtorow, sanitize.text.function=NULL, caption.placement="top")

1 个答案:

答案 0 :(得分:1)

您的R代码中不需要Sexpr; R代码可以直接使用表达式。 Sexpr不是一个LaTeX命令,即使它看起来像一个;它是一个Sweave命令,因此将它作为R代码的输出无效。

尝试

addtorow$command <-paste('\\hline \\multicolumn{5}{l}{Residual standard error:',
                         extradat$v1, '} \\\\ ')

此外,无需完全重新创建xtable使用的矩阵,您只需构建默认输出即可。建立在上面的内容之后,例如:

mytab <- xtable(model1, caption="Summary Results", label="tab:model1")
addtorow$pos[[1]] <- dim(mytab)[1]
print(mytab, add.to.row=addtorow, sanitize.text.function=NULL, 
             caption.placement="top")

请参阅http://people.su.se/~lundh/reproduce/sweaveintro.pdf,了解您可以按原样使用的示例。