在R中将数字从科学计数法转换为常规表示法

4

我有一个从Oracle导入的数字变量,有17个数字,例如:20172334534654667

现在我使用R中的dbGetQuery()从Oracle导入它,但是R使用科学计数法:2.01723e+16

如果我尝试使用以下方法转换数字:

mydata$var <- format(mydata$a, scientific=FALSE)

我得到的结果是20172334534654600,而不是20172334534654667。也就是说,最后两个数字总是被替换为00。

有没有可能在不使用其他包的情况下解决这个问题?


1
也许你可以加载 library(bit64) 并使用 as.integer64(yournumber) 或者使用 format.integer64 - akrun
嗨,感謝你的幫助。我打算試試這個套件。但是,有沒有辦法在不使用額外套件的情況下達到相同的效果呢? - user1010441
所以,你的意思是将它转换为字符吗?如果我这样做,我会遇到相同的问题...最后两个数字是00。 - user1010441
不可能,我正在直接从Oracle数据库中使用dbGetQuery()进行读取... - user1010441
1个回答

2
我无法复制您的问题,但我认为最好使用formatC而不是format
对于您的情况,可以这样做:
numb <- 20172334534654667
numb

formatC(numb, format = "f", digits = 0)

Which gives:

[1] "20172334534654668"

希望这对你有用!

嗯,希望它能够工作。更奇怪的是它正在将1添加到最后一位数字..如果这激发了另一个可能的答案,我会保留这个答案直到有一个答案被接受。 - Dave Gruenewald
大家,我解决了这个问题,通过在我的SQL查询中将变量声明为字符类型。 - user1010441
所以这就足够了。 - user1010441

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