我正在使用带有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)
```
答案 0 :(得分:2)
在你的块中尝试这个,仍然使用result='asis'
:
library(pander)
pander(m)
他们还提出了一种澄清代码块的好方法,这样您就可以调用print(m)
,并且markdown中的输出将从pander
调用相应的函数。
答案 1 :(得分:2)
您能否请尝试最新的texreg版本1.34.2(请参阅.tar.gz文件here或this帖子)?
根据RStudio开发人员的说法,问题是他们切换到了更新版本的Pandoc,它不再适用于缩进的HTML代码。更确切地说,它将用四个空格缩进的文本解释为代码块,如Markdown表示法。有关问题说明,请参阅here。
因此,在新的texreg
版本中,indentation = ""
函数中有一个名为htmlreg
的新参数。它默认关闭缩进。使用indentation = " "
恢复以前的行为。
修改1 :另请确保在左侧使用参数center = FALSE
和star.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 = TRUE
,doctype = FALSE
,html.tag = FALSE
,head.tag = FALSE
和body.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>
答案 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)
```