2

当我使用 时Sweave,我喜欢texreg将漂亮的模型结果打印到乳胶中。我开始制作 Word 文档,但由于无法回收旧代码RMarkdown,我遇到了问题。texreg

有什么办法可以修改这个块以在 Word 中输出漂亮的打印内容?

注意:upgradesngr.fx是一个plm包对象。

{r summary,echo=FALSE,results='markup'} htmlreg(list(upgradesngr.fx), star.symbol = "\\*", center = TRUE, doctype = FALSE)

4

1 回答 1

4

在下文中,我假设您正在使用 RStudio 创建 Word 文档。我认为这是一个特定于软件的问题。简而言之:您在编织 Word 文档时不能嵌入 HTML 代码。

包中的htmlreg函数texreg创建 HTML 表格(不是 Markdown 表格)。在适当的 Markdown 文档中,可以嵌入 HTML,因为这是 Markdown 规范的一部分。例如,您可以在您的 Markdown 文档中编写以下代码,它将被翻译成一个有两列的表格:

<table>
<tr>
<td>upper left</td>
<td>upper right</td>
</tr>
<tr>
<td>lower left</td>
<td>lower right</td>
</tr>
</table>

例如,如果您在 RStudio 中使用“Knit to HTML”功能,或者如果您使用任何其他 Markdown 编辑器/查看器,则会产生以下结果:

upper left upper right
lower left lower right

如果您在 RStudio 的 Markdown 文档中尝试此操作并从中创建 HTML 文档,它将起作用。请注意,在 RStudio 中使用的 Pandoc 引擎不允许缩进。

但是,如果您尝试创建 Word 文档,则该文档不会被解释为(正确的)Markdown 代码(在某种意义上,嵌入 HTML 是不可能的),也就是说,您会得到所有单元格只是垂直列出,但没有格式化为表格. 换句话说,使用“Knit to Word”功能不会解释嵌入在 Markdown 中的 HTML 块。结果将如下所示:

upper left
upper right
lower left
lower right

您可以在 RStudio 中自己的文档中进行尝试。

现在,这正是“Knit to Word”功能无法htmlreg在 Word 文件中正确嵌入创建的表格的原因。

不过,这里有一个可以与“Knit to HTML”函数一起正常工作的解决方案,因为这个函数似乎可以正确解释 HTML 代码: 首先,让我们做一些准备步骤。加载texreg包并估计一个简单的线性模型以进行说明:

```{R echo = FALSE, include = FALSE}
library("texreg")
ctl <- c(4.17, 5.58, 5.18, 6.11, 4.50, 4.61, 5.17, 4.53, 5.33, 5.14)
trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69)
group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
```

然后创建一个 HTML 表,如下所示:

```{r summary,echo = FALSE, results = "asis"}
htmlreg(lm.D9, star.symbol = "\\*", center = TRUE, doctype = FALSE, caption = "")
```

注意results = "asis"这里是必要的。另请注意,该htmlreg函数默认为文档类型生成一行,因为该函数还可用于创建完整的 HTML 文档。我们需要将其关闭以使其正常工作。在您的示例中,您正确地转义了星号。结果将是嵌入在 HTML 文档中的适当回归表。如果您现在使用“Knit to Word”功能,这也将包括表格内容,但就像在上面的 HTML 示例中一样,它只是将所有表格单元格列为单独的行,并且没有正确格式化为表格。

也可以使用 RStudio 中的“Knit to PDF”功能通过 LaTeX 创建 PDF 文档。在这种情况下,显然您必须用 LaTeX 表替换 HTML 表。为此,请使用以下代码而不是上面的代码:

```{r summary, echo = FALSE, results = "asis"}
texreg(lm.D9, star.symbol = "\\*", center = FALSE, caption = "")
```

最后,请注意,您可以使用变通方法创建 Word 文档。应该可以创建一个 HTML 文档,然后在 MS Word 中打开或导入它。至少可以将 的输出保存htmlreg到文件并在 Word 中打开它,所以我认为对于使用knitr.

于 2016-05-08T07:48:31.987 回答