将表格从R导入Libre Office Writer的最佳方法?

将表格从R导入Libre Office Writer的最佳方法?,r,excel,csv,libreoffice,libreoffice-calc,R,Excel,Csv,Libreoffice,Libreoffice Calc,目前,我的工作流程是在R中进行统计和数据重组,并使用Libre Office(LO)Writer编写文档。R中的分析结果通常是表格,我需要将这些数据输入到LO Writer中。我还没有找到一种简单的方法来直接实现这一点,所以我通常做的是:1)将表格放在R中,2)将表格导出为.csv,3)在LO Calc中打开.csv,4)使用paste special作为RTF从LO Calc复制到LO writer 保存到.csv时,我使用write.csv(table_1,“table_1.csv”,na=

目前,我的工作流程是在R中进行统计和数据重组,并使用Libre Office(LO)Writer编写文档。R中的分析结果通常是表格,我需要将这些数据输入到LO Writer中。我还没有找到一种简单的方法来直接实现这一点,所以我通常做的是:1)将表格放在R中,2)将表格导出为.csv,3)在LO Calc中打开.csv,4)使用paste special作为RTF从LO Calc复制到LO writer

保存到.csv时,我使用
write.csv(table_1,“table_1.csv”,na=“”)
。这将导致一个额外的步骤,因为LO Calc需要知道如何读取.csv文件。或者,可以选择将输出到.ods或.xls(x)

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

第一种方法是使用例如
round(表1、2)
将R中的数字四舍五入,然后使用上述命令保存。问题是当你把它导入LO Calc时,像.60这样的数字会变成.6,丢失一个(冗余)数字。这使得演示文稿有些不一致。可以将它们添加回文档的表中,也可以使用LO Calc中的舍入函数

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

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


在避免重要数字问题和额外点击的同时,将结果表从R输入LO Writer的最佳方法是什么?

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


也可以考虑<代码> KNITR 包来创建文档。

< P>如果您想要一个完全自动化的生成LeBeffice文档的方式,那么标准的R方式就是编写文档,然后使用./P>将生成的文件转换成ODT格式。
(Pandoc还不支持Ascidoc作为输入格式,因此您只能用markdown/LaTeX/HTML/textile/reStructuredText编写文档。)

也许有一些快捷方式:我使用(在windows上)写.table(dat,“剪贴板”,sep='\t',row.names=FALSE,header=TRUE)并将它粘贴到我的电子表格中。这方面的步骤需要保存和导入CSV。至于有效数字,您是否尝试过类似于
dat[,num_columns]的方法,这对剪贴板来说是个不错的主意。我尝试了
format()
,但由于某种原因,它将类型更改为字符。但是,我没有在
sapply()
中尝试它。如果不转换为字符串,则无法确保舍入后将显示有效数字。否则,您需要依赖Calc和/或Writer来处理有效数字。更重要的是:在电子表格中,您通常可以在每个单元格的基础上控制符号数字的数量,但只影响数字的显示方式,无论是浮点数还是整数。在R中,您通常只能在全局级别上控制符号数字(有一些小的例外),这同样不会影响数据结构内部数字的精度;它只是一种显示配置。通常,CSV和复制/粘贴元数据不包括该显示特定参数。因此,如果要在复制/粘贴中强制使用该参数,则必须通过字符串。我同意@AaronKatch,
sprintf
是great工具用于字符串格式化,尽管这可能是我的C/C++培训开始的。我通常不会在建议中首先列出它,因为我认为许多R程序员更喜欢
format
paste
(我不相信这是基于性能的偏好)。