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