1

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

问题是我在表达式中得到了一个"Undefined control sequence"for表达式。这两个不兼容吗?如果是这样,我做错了什么,如果没有,有人知道如何做我想做的事吗?\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")
4

1 回答 1

2

您不需要在 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以获取您可以按原样使用的示例。

于 2011-03-10T18:40:07.087 回答