R can';“不管理”;“一般”;读取libreoffice生成的xls时格式化的单元格

R can';“不管理”;“一般”;读取libreoffice生成的xls时格式化的单元格,r,formatting,xls,libreoffice,R,Formatting,Xls,Libreoffice,我在电子表格中切换到了libreoffice,但在使用gdata包的read.xls()函数导入使用libreoffice insider修改的xls文件时,我注意到了一个错误。如果列的格式为“常规”,则在R中,单元格将显示“常规”,而不是正确的值 为了解决这个问题,我需要将每一列的格式设置为正确的格式(数字、文本等),这是我更愿意避免的,因为一般情况下,我可以更好地管理格式设置(例如,自动显示正确数量的有效数字) 有更好的解决办法吗 已解决: 根据RockScience的建议,我尝试了open

我在电子表格中切换到了libreoffice,但在使用gdata包的read.xls()函数导入使用libreoffice insider修改的xls文件时,我注意到了一个错误。如果列的格式为“常规”,则在R中,单元格将显示“常规”,而不是正确的值

为了解决这个问题,我需要将每一列的格式设置为正确的格式(数字、文本等),这是我更愿意避免的,因为一般情况下,我可以更好地管理格式设置(例如,自动显示正确数量的有效数字)

有更好的解决办法吗

已解决:


根据RockScience的建议,我尝试了
openxlsx:read.xlsx()
,效果非常好。比
gdata:read.xls()更快,更不容易出错

我还注意到,
gdata::read.xls
不计算公式,而只是导入excel中显示的内容。因此,例如,如果公式返回1.0002,但在excel中显示限制为2位,
gdata::read.xls
将只导入1.00

我研究了几种将xls数据导入R的方法:

正如您所看到的,
gnumeric::read.gnumeric.sheet
确实计算了公式,因此我建议您尝试一下这个方法(但它需要访问gnumeric命令行,这在Windows上不容易获得)


最近又有了一个新的软件包,看起来很有希望。

我会将此作为错误报告提交给libreoffice(这并不能解决您的问题)。同时,还有一种解决方法可以将电子表格转储到
csv
或其他文本格式。我不知道是否应该根据SO指南将答案标记为正确,因为您提供的解决方案是附带注释,但openxls::read.xlsx工作得非常好,甚至比gdata::read.xls更快!非常感谢。