2015-03-13 243 views
2

我正在使用RStudio IDE(v 0.99.323)和,并试图通过knitr使用htmlreg生成模型表以生成MSWord输出。怀疑我错过了一些简单的事情。使用rstudio/rmarkdown/knitr使用包texreg创建模型摘要表

下面附加的rmarkdown块创建一个单独的文件'mytable.doc'与一个美丽的表。但是,当我在RStudio IDE中单击“编织单词”时,htmlreg(m)行会在MSWord文档中生成html表格代码。我究竟做错了什么?

非常感谢! --Dale

```{r, results='asis'} 
library(MASS) 
library(texreg) 
data(menarche) 
m <- glm(cbind(Menarche, Total-Menarche) ~ Age, family=binomial(logit), data=menarche) 

htmlreg(m, file = "mytable.doc", caption="Age at Menarche", inline.css = TRUE, doctype = TRUE, html.tag = TRUE,            head.tag = TRUE, body.tag = TRUE, ci.force=TRUE, ci.test=NULL,bold=TRUE) 

htmlreg(m) 
``` 
+0

您的目标是什么?在漂亮的markdown文档中有相同的漂亮的表格吗? – vpipkt 2015-03-13 14:49:20

+0

是的 - 我想在通过编织rmarkdown文件创建的html或word文档中嵌入相同的漂亮表格。 – user25494 2015-03-13 14:55:23

回答

1

试试这个在您的块,仍然使用result='asis'

library(pander) 
pander(m) 

帽尖到http://www.r-statistics.com/2013/03/write-ms-word-document-using-r-with-as-little-overhead-as-possible/

他们还提出一个很好的方式,以澄清代码块,这样你可以只请致电print(m),降价输出将从pander调用适当的功能。

+0

感谢您的链接。添加pander(m)确实会产生很好的格式化输出。然而,texreg软件包非常灵活,并且能够生成将多个模型组合在一起的表格。 – user25494 2015-03-13 15:17:35

+0

研究这个问题,我发现了一些能够对表格输出进行非常细致控制的方法,还有一些能够以所需格式自动执行“打印”。我的猜测是,您可能需要深入研究texreg如何生成html和Word输出。问题是如何正确地将这个集成到Rmarkdown - > markdown - > word工作流程中。 – vpipkt 2015-03-13 15:29:52

0

这是一个pandoc降价问题,或htmlreg未创建正确的缩进问题。我不完全明白,如果这是一个错误或隐蔽的,因为一个特点:

http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html#raw-html

尝试一个简单的.md(不.rmd)文件,如下所示:

<h1>Works</h1> 

<table border="8"> 
    <tr> 
    <td>111</td> 
    <td>222</td> 
    <td>444</td> 
    </tr> 
</table> 

<h1>Not what you want</h1> 

<table border="8"> 
    <tr> 
    <td>111</td> 
    <td>222</td> 
    <td>444</td> 
    </tr> 
</table> 

<h1>Works too (not in screenshot)</h1> 

<table border="8"> 
    <tr><td>111</td><td>222</td><td>444</td></tr> 
</table> 

output of raw html

2

您可以试试最新的texreg版本1.34.2(请参阅.tar.gz文件herethis后)?

根据RStudio开发者的说法,问题是他们切换到Pandoc的更新版本,该版本不再适用于缩进的HTML代码。更准确地说,它将使用四个空格缩进的文本解释为代码块,如Markdown符号中所示。有关他们的问题描述,请参阅here

因此,在新的texreg版本中,在htmlreg函数中有一个名为indentation = ""的新参数。它默认关闭缩进。使用indentation = " "可恢复以前的行为。

编辑1:也请务必使用参数center = FALSEstar.symbol = "\\*"左侧定位和正确显示的意义明星。星号需要进行转义,因为他们另有解释为降价语法的一部分:

```{r, results = 'asis'} 
htmlreg(m, center = FALSE, star.symbol = "\\*") 
```{r} 

对于PDF笔记本电脑(使用LaTeX的内部),使用texreg

​​

编辑2:也请阅读htmlreg的帮助页面,尤其是描述htmlreg参数的部分。它们包含一些关于如何使文档与Markdown相兼容的有用信息,Markdown使用RStudio,Pandoc和knitr来创建HTML文档。特别是,当您不打算创建完整的HTML文档时,请使用参数inline.css = TRUEdoctype = FALSEhtml.tag = FALSE,head.tag = FALSEbody.tag = FALSE

关于MS Word:您在您的问题下面的评论中提到您要创建HTML或Word文档。 htmlreg功能旨在创建HTML文件,而不是Word文件(如函数的名称所示)。但是,可以在MS Word中加载这些HTML文件,因为Word能够解释HTML代码。然而,据我所知(但我可能是错误的,因为我不知道knitr如何在内部创建Word文件),knitr创建二进制Word文档,并且直接在这些二进制Word文档中嵌入HTML代码是不可能的。但是,您可以尝试创建HTML笔记本,将它们保存到磁盘,然后在MS Word中打开它们。

+0

关于为什么Word文档格式不正确的任何线索? – user25494 2015-03-13 20:07:11

+0

请参阅“编辑2”。另请注意,内部HTML浏览器以混乱的方式显示表格。使用其他浏览器(如Firefox或Chrome)正确显示表格。 – 2015-03-13 21:47:46

0

默认情况下,软件包作者已更新texreg以关闭缩进。

参见: http://rmarkdown.rstudio.com/authoring_migrating_from_v1.html#preserving-generated-html 通过更新包后: install.packages( “texreg”,回购= “http://R-Forge.R-project.org”)

下面置于rmarkdown组块(.Rmd)文档现在产生一个美丽HTML表格,当我在RStudio中编织HTML。然而,'编织字'仍然不会产生预期的输出。

```{R,结果= 'ASIS'}

库(texreg)

htmlreg(米,字幕= “初潮年龄”,caption.above = TRUE,ci.force = TRUE,ci.test = NULL,bold = TRUE)

```