使用带有RStudio / rmarkdown / knitr的包texreg创建模型汇总表

时间:2015-03-13 13:39:38

标签: r rstudio knitr r-markdown texreg

我正在使用带有rmarkdown的RStudio IDE(v 0.99.323)并尝试使用knitr通过htmlreg生成模型表以生成MSWord输出。怀疑我错过了一些简单的事情。

下面附加的rmarkdown块创建了一个单独的单词文件'mytable.doc',带有漂亮的表格。但是,当我在RStudio IDE中单击“Knit Word”时,行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)
```

4 个答案:

答案 0 :(得分:2)

在你的块中尝试这个,仍然使用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),并且markdown中的输出将从pander调用相应的函数。

答案 1 :(得分:2)

您能否请尝试最新的texreg版本1.34.2(请参阅.tar.gz文件herethis帖子)?

根据RStudio开发人员的说法,问题是他们切换到了更新版本的Pandoc,它不再适用于缩进的HTML代码。更确切地说,它将用四个空格缩进的文本解释为代码块,如Markdown表示法。有关问题说明,请参阅here

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

修改1 :另请确保在左侧使用参数center = FALSEstar.symbol = "\\*"进行对齐,并正确显示有效星。星号需要被转义,因为它们被解释为Markdown语法的一部分:

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

对于PDF笔记本(内部使用LaTeX),请使用texreg

```{r, results = 'asis'}
texreg(m, float.pos = "h")
```{r}

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

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

请参阅: http://rmarkdown.rstudio.com/authoring_migrating_from_v1.html#preserving-generated-html 通过以下方式更新包后: install.packages(&#34; texreg&#34;,repos =&#34; http://R-Forge.R-project.org&#34;)

下面放在rmarkdown(.Rmd)文档中的块现在可以在我编织HTML&#39;在RStudio内。然而,&#39; Knit Word&#39;仍然没有产生预期的产出。

```{r,results =&#39; asis&#39;}

库(texreg)

htmlreg(m,caption =&#34; Age at Menarche&#34;,caption.above = TRUE,ci.force = TRUE,ci.test = NULL,bold = TRUE)

```