2016-05-07 38 views
2

当我使用Sweave时,我喜欢texreg包装,将漂亮的打印模型结果转化为乳胶。我搬到RMarkdown来生成word文档,而且我面临的问题是因为我不能更好地回收旧的texreg代码。使用Texmark与Rmarkdown获取Word文档

是否有任何方法来修改此块在Word中有一个漂亮的打印输出?

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

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

回答

4

在下文中,我假设你正在使用RStudio创建Word文档。我相信这是一个软件特定的问题。简而言之:编织Word文档时无法嵌入HTML代码。

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

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

例如,如果你使用了“编织成HTML”中RStudio功能,或如果你使用任何其他降价编辑器/浏览器,这将产生以下结果:如果试试这个在RStudio减价文档中,并从它创建一个HTML文档

upper left upper right 
lower left lower right 

,它会工作。请注意,在RStudio中引擎盖下使用的Pandoc引擎不允许缩进。

但是,如果您尝试创建Word文档,则文档不会被解释为(正确的)Markdown代码(就是说嵌入HTML是不可能的),即您将所有单元格垂直列出,而不是格式化为表格。换句话说,使用“Knit to Word”函数不会解释嵌入在Markdown中的HTML块。结果将如下所示:

upper left 
upper right 
lower left 
lower right 

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

现在,这正是“编织到字”功能没有正确地将由htmlreg创建的表格嵌入到Word文件中的原因。

下面是一个可以正确使用“编织到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文档中的正确回归表。如果您现在使用“编织到字”功能,它也会包含表格内容,但就像在上面的HTML示例中一样,它将简单地将所有表格单元格列为单独的行并且没有正确格式化为表格。

也可以使用RStudio中的“编织为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创建的更长的HTML文档,这应该是相同的。