从R到Libre Office Writer获取表格的最佳方法是什么?

时间:2015-06-13 03:04:29

标签: r excel csv libreoffice libreoffice-calc

目前,我的工作流程是我在R中进行统计和数据重组,并使用Libre Office(LO)Writer编写我的文档。 R中的分析结果通常是表格,我需要将这些结果放入LO Writer中。我还没有找到一种方法直接以简单的方式做到这一点,所以我通常做的是: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文件。或者,可以install one of the packages输出.ods或.xls(x)。

这样做的一个问题是,这经常导致文件中的十进制数非常长,例如2.21931,而一个人通常只想在文档中显示2或3位数。我找到了两种解决这种烦恼的方法。

第一种是使用例如对R中的数字进行舍入。 round(table_1, 2)然后使用上面的命令保存。这个问题是,当一个人将其导入LO Calc时,.60之类的数字将变为.6,失去一个(冗余)数字。这使得呈现有些不一致。可以将它们添加回文档的表格中,也可以使用LO Calc中的舍入函数。

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

最后,当像这样进入LO Writer的重要表时,该表将具有不可见的边框。必须为每个表手动添加这些。

将结果表从R转换为LO Writer的最佳方法是什么,同时避免有效数字问题和额外点击?

2 个答案:

答案 0 :(得分:2)

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

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

另外,请考虑knitr包来动态创建文档。

答案 1 :(得分:1)

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

(Pandoc还不支持AsciiDoc作为输入格式,因此您只能使用markdown / LaTeX / HTML / textile / reStructuredText编写文档。)