7

我在 Rstudio 中使用 Knitr 来生成降价文件。我通过 xtable 包显示表格,它很好地显示在 html 文件中。但是,当我通过 pandoc 将 .md 转换为乳胶时-乳胶文件不包含应有的表格,而仅包含表格中的值而没有任何命令。

Markdown - Knitr 输入

为了给出更好的思路,下表提供了数据行的示例:

```{r table, results='asis', echo=FALSE} 
r = read.table("C:/aR_files/data.txt",sep=",", header=TRUE,as.is=TRUE)
r$X = NULL;
print(xtable(r), type='html') 
```

乳胶

In order to give a better idea, the following table provides a sample of
data rows:


Row1

Row2

Val1

Val1

我想我可能缺少一个乳胶包,所以我下载了 ctable.sty,但我仍然得到相同的输出。任何想法表示赞赏,谢谢!

4

1 回答 1

6

我使用与您非常相似的工作流程,您最好的选择是放弃通常笨重xtable的包并使用该pander包来打印您的表格。pander()您可以在通用函数中包装您可能希望显示为表格的任何对象。pandoc.table()这是具有多个选项的函数的包装器。如果您指定选项style = "XXX",您可以实现您在此处询问的内容。您可以选择 4 种不同的样式;“multiline”(默认)、“grid”、“simple”或“rmarkdown”。我经常在 Rstudio 中编写 rmarkdown 文档,然后使用 pander 包将它们转换为 Word 文档:

library(pander)
Pandoc.convert("C:/Users/BlahBlahBlah/Document.md", format="docx")

在转换为 .docx 格式后,所有 4 种表格样式都会变成表格对象,但只有一种表格样式在 .docx 文档和初始“knit”产生的 .html 文件中看起来正确。这种风格是“rmarkdown”。您可以实现这两种方式。一种是:

```{r table, results='asis'}
pandoc.table(myTable, style = "rmarkdown")
```

但是,我更喜欢在文档开头全局设置表格样式,以确保我所有的表格都具有相同的格式,并允许我使用更简洁pander(x)而不是更冗长pandoc.table(x, style = "someStyle")

```{r table, results='asis'}
panderOptions("table.style", "rmarkdown")
pander(myTable)
```

rmarkdown然而,使用这种风格有一些副作用。主要是不支持单元格内的换行符,请买家注意。我尝试了不同的样式并最终决定我喜欢“多行”的默认样式,因为它在单元格内具有换行符的灵活性,即使我生成的 .html 文件看起来很傻。不过这并不困扰我,因为我实际上只使用从 .md 文件转换而来的 .docx 文件。我写了一篇关于制作可能有用的漂亮表格的博客文章。它权衡了几种方法的优缺点,包括xtable()几种pander()情况。

于 2013-06-25T15:36:07.763 回答