在下文中,我假设您正在使用 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
.