从R到自由办公室作家的最佳方式?

目前,我的工作stream程是在R中进行统计和数据重组,并使用Libre Office(LO)Writer写我的文档。 R中分析的结果通常是表格,我需要将它们写入LO Writer。 我没有find一种方法直接做到这一点,所以我通常做的是:1)将表格放在R中,2)将表格导出为.csv,3)在LO Calc中打开.csv,4)使用特殊粘贴作为RTF从LO Calc复制到LO作者。

当保存到.csv,我通过使用write.csv(table_1, "table_1.csv", na = "")来做到这一点。 这会导致额外的步骤,因为LO Calc需要知道如何读取.csv文件。 或者,可以安装其中一个包 ,输出到.ods或.xls(x)。

这样做的一个问题是,这经常导致文件中十分长的十进制数,例如2.21931,而一个通常只希望在文档中显示2或3个数字。 我已经find了两个解决这个烦恼。

首先是使用例如round(table_1, 2) R中的数字舍入,然后使用上述命令进行保存。 这个问题是,当你将这个input到LO Calc中时,例如.60这样的数字将变成.6,失去一个(冗余的)数字。 这使得表述有些不一致。 可以将它们添加回文档中的表格中,或者使用LO Calc中的舍入函数。

第二个是在Libre Office Calc中使用舍入函数,但是这需要一些额外的工作/更多的工作。

最后,当LO Writer这样的重要表格时,表格将会有不可见的边框。 人们将不得不为每个表手动添加这些。

从R到LO Writer中获得结果表的最佳方式是什么,同时避免了重要的数字问题和额外的点击?

尝试使用sprintf()等函数在R进行格式化。 这是我发现控制数字显示的最好方法。 下面的url有很好的工作示例。

http://www.cookbook-r.com/Strings/Creating_strings_from_variables/

另外,请考虑knitr软件包来即时创build文档。

如果你想要一个完全自动的生成LibreOffice文档的方法,标准R方法是使用knitr编写你的文档,然后使用Pandoc将生成的文件转换成ODT格式。

(Pandoc目前还不支持AsciiDoc作为input格式,因此您只能将文档写入markdown / LaTeX / HTML / textile / reStructuredText。)