我有一个 20 位数字的 ID 变量。一旦我读取 R 中的数据,它就会更改为科学记数法,然后如果我将相同的 id 写入 csv 文件,ID 的值就会更改。
例如,运行下面的代码应该将 x 的值打印为“ 12345678912345678912 ”,但它打印“ 12345678912345679872 ”:
代码:
options(scipen=999)
x <- 12345678912345678912
Run Code Online (Sandbox Code Playgroud)
打印(x)
输出:
[1] 12345678912345679872
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1)为什么会发生这种情况?
2)如何解决这个问题?
我知道这与 R 中数据类型的存储有关,但我仍然认为应该有某种方法来处理这个问题。我希望我对这个问题很清楚。
我不知道是否有人问过这个问题,所以请给我一个链接(如果它是重复的)。我将删除这篇文章
我已经经历过这个,所以我可以解决我的问题,但我无法解决它。
任何帮助将不胜感激。谢谢
为了避免由于数字存储/表示而导致的问题,您可以使用ID选项直接将变量导入为字符colClasses,例如,如果使用read.csv并导入包含该\xc3\x8cD列和另一个数字列的 data.frame:
mydata<-read.csv("file.csv",colClasses=c("character","numeric"),...)\nRun Code Online (Sandbox Code Playgroud)\n