我正在将包含大整数的列从数据库检索到R中(使用RJDBCs dbGetQuery方法(。对于测试用例,可以考虑以下数字
1000522010609612
1000522010609613
1000522010609614
1000522010609615
1000522010609616
1000522010609617
**971000522010609612
1501000522010819466
971000522010943717
1501000522010733490**
R似乎读错了内容。我在 R 中可用的方式(在我使用 RJDBC 从数据库中读取后(是:
1000522010609612
1000522010609613
1000522010609614
1000522010609615
1000522010609616
1000522010609617
**971000522010609664
1501000522010819584
971000522010943744
1501000522010733568**
请参阅最后 4 个数字。他们错了!它似乎会自动将数据转换为带有损坏数字的数据帧(这很好 - 但是(对于bigints(。关于我们如何解决上述问题的任何建议,特别是当我们使用 RJDBC 包使用 dbGetQuery 时?
您的数据以浮点数的形式读入:
DF <- read.table(text="1000522010609612
1000522010609613
1000522010609614
1000522010609615
1000522010609616
1000522010609617
971000522010609612
1501000522010819466
971000522010943717
1501000522010733490")
class(DF[,1])
#[1] "numeric"
sprintf("%20f", DF[10, 1])
#[1] "1501000522010733568.000000"
您可以将其读取为字符串并转换为大整数或直接读入大整数:
library(bit64)
DF <- read.table(text="1000522010609612
1000522010609613
1000522010609614
1000522010609615
1000522010609616
1000522010609617
971000522010609612
1501000522010819466
971000522010943717
1501000522010733490", colClasses = "integer64")
# V1
#1 1000522010609612
#2 1000522010609613
#3 1000522010609614
#4 1000522010609615
#5 1000522010609616
#6 1000522010609617
#7 971000522010609612
#8 1501000522010819466
#9 971000522010943717
#10 1501000522010733490
我无法帮助您使用数据库应用程序,但这应该为您的问题提供一个起点。