我一直试图在R Markdown中生成一个表,并输出到如下所示的单词(化学科学中非常常见的表格式):
我从kable开始,使用markdown语法获取在文档文档文件中有效的下标等(例如[FeBr〜2〜(dpbz)〜2〜])。但是,我无法修改表格设计,最重要的是我无法弄清楚如何正确显示标题。所以我继续使用flextable包。到目前为止,这是我的代码(仍在进行中):
```{r DipUVvis,echo=FALSE, anchor='Table S', tab.cap="Summary of catalytic reactions monitored with *in situ* UV-Vis spectroscopy."}
df<-data.frame(Entry=c('AMM 51^*a*^','AMM 52^*a*^','AMM 53^*a*^','AMM 54^*a*^','AMM 57^*b*^','AMM 58^*c*^','AMM 59^*d*^'),
Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~] (2.00)','[FeBr~2~(dpbz)~2~] (1.00)','[FeBr~2~(dpbz)~2~] (0.50)','[FeBr~2~(dpbz)~2~] (2.00)','[FeBr(dpbz)~2~] (1.00)','[FeBr~2~(dpbz)~2~] (2.00)'),
Nucl=c('Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)','Zn(4-tolyl)~2~/2 MgBr~2~ (100)'),
BnBr=c(0,0,0,0,'42 + 42',42,42))
tbl<-regulartable(df)
tbl<-set_header_labels(tbl,Entry='Entry',Precat='Pre-catalyst (mM)',Nucl='Nucleophile (mM)',BnBr='BnBr (mM)')
tbl <- align( tbl, align = "center", part = "all" )
tbl<-autofit(tbl)
tbl
```
这照顾了标题,并设置了一些其余参数,我想我可以使表格看起来如上图所示。从格式的角度来看,结果表在Rstudio控制台中看起来不错:
但是,有两个主要问题:
1)下标/上标未翻译。
2)当我编织成文字而不是表格时,我得到了5页代码,据我所知,这些代码必须是html代码?
经过数小时的尝试,我发现一个可能的原因是R Studio使用了旧版本的pandoc(https://github.com/davidgohel/flextable/issues/34)。确实对我来说就是这种情况,因此我通过将新安装的pandoc文件移动到正确的目录(r studio正在查找的目录)中并重命名来更改了它。现在必须已经工作了(请参阅第二个图形控制台部分)。但是它并没有改变任何东西。然后我尝试添加代码:
knit_print(tbl)
这总是显示错误:
knit_print.flextable(tbl)中的错误:render_flextable
需要用作knitr / rmarkdown R代码块的渲染器(通过rmarkdown渲染)。
有趣的是,当我从R studio(tbl)的r块中删除了最后一行,并在r块下面(不在其中)添加了以下内容:
`r tbl`
表是用单词生成的(当然,我仍然没有正确地获得下标和上标)。它的顶部还带有图形标题,而不是底部,这是在主要r块之后生成表的理想副作用。
关于正在发生什么的任何想法以及如何才能用字词获取正确的表输出?这里真的很困惑,所以在此先感谢您的帮助。
更新:如果我从块头中删除了anchor = 'Table S'
,该表就可以正常工作了(尽管仍然没有下标或上标),但是我不能自动为这些表编号(我已经使用过:{{3} }进行自动编号和交叉引用。