Java 在将数据导入R时,如何避免精度损失?

Java 在将数据导入R时,如何避免精度损失?,java,r,Java,R,我从Java代码中生成了一个CSV文件,现在想在R中使用它。问题是,我的一个属性存在精度问题 时间戳属性在Java中保存为long。当将数据导入到此R时 1481653606064 1481653606064 1481653606064 1481653606065 1481653606068 1481653606073 1481653606081 1481653606083 转换为以下格式: 1,48165E+12 1,48165E+12 1,48165E+12 1,48165E+12 1,4

我从
Java
代码中生成了一个CSV文件,现在想在
R
中使用它。问题是,我的一个属性存在精度问题

时间戳属性在Java中保存为
long
。当将数据导入到此R时

1481653606064
1481653606064
1481653606064
1481653606065
1481653606068
1481653606073
1481653606081
1481653606083
转换为以下格式:

1,48165E+12
1,48165E+12
1,48165E+12
1,48165E+12
1,48165E+12
1,48165E+12
1,48165E+12
1,48165E+12
这根本没用

我刚开始使用R,所以我不知道如何避开这个可能很简单的问题。我希望你能帮我


如果需要任何澄清,请留下评论。

尝试使用软件包和fread函数从csv加载数据。

尝试使用软件包和fread函数从csv加载数据和软件包。

没有发生精度损失,你只需要精确地打印出来。最大为2^53的整数值完全以数字数据类型存储,2^53的长度为15位(“9007199254740992”),而您的数字长度仅为12位

> x = 1481653606083
> x
[1] 1.481654e+12
> sprintf("%.f",x)
[1] "1481653606083"

没有发生精度损失,您只需以完全精度打印即可。最大为2^53的整数值完全以数字数据类型存储,2^53的长度为15位(“9007199254740992”),而您的数字长度仅为12位

> x = 1481653606083
> x
[1] 1.481654e+12
> sprintf("%.f",x)
[1] "1481653606083"

您可以执行
str(DF$Timestamp)
检查变量
Timestamp
的类别,其中
DF
是您的输入数据。frame。最可能的情况是,它只是一种视觉效果,时间戳已经用科学符号格式化。要抑制它,您可以尝试
options(scipen=999)
并再次读取csv。数据的显示与存储精度不同-
x您可以
str(DF$Timestamp)
检查变量类
Timestamp
,其中
DF
是您的输入数据。frame。最可能的情况是,它只是一种视觉效果,时间戳已经用科学符号格式化。要取消显示,您可以尝试
选项(scipen=999)
并再次读取csv。数据显示与存储精度不同-
x