R包openXLSX和浮点运算可能会产生不准确的结果。

3
当导出具有非常小的p值的表格数据时,我们注意到一些行被错误地替换为0.0000000000,而不是-200…_300中非常小的10的幂。以下链接告诉我们最小的Excel限制是2.2250738585072E-308,但我们观察到像1,21408E-288或1,21408E-288这样的数字存在错误(https://support.microsoft.com/en-us/kb/78113)。我们可以通过连续将2.2250738585070E-208除以10来确认这一点。按顺序除以10以达到发布的限制。

serial division by 10 to reach the published limit

使用R代码导出文本表格(请注意第三列中的10E-293和-288小数字)。

exported text table

使用openxlsx的R代码导出相同表格的xlsx文件版本,其中小数点用0.0000000000替换(使用点而不是逗号作为分隔符)

resulting excel file with errors

微软 Excel 在打开时会进行纠正,但使用了错误的小数分隔符。

excel corrects the mistake leading to wrong decimal separator and inconsistent number for my locale settings

有人知道Xlsx导出的限制是多少,这样我们就可以将这些数字转换为0吗?

谢谢


1
你能否更新你的问题并清楚地告诉我们你的数据管道是什么(例如,从R到Excel或者反之),并且在每个步骤提供通过和失败的样本数据吗? - Tim Biegeleisen
这个问题已经被确认,并且更好的描述在这里。但是,建议的解决方案对我来说并没有起作用,因为我还不能安装应该可以正常工作的软件包的开发版本。 - splaisan
1个回答

1
问题最终被解决,安装openXLSX软件包的开发者版本3.1.6(请参考GitHub页面进行安装,并查看132号问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接