2014-12-06 52 views
0

R正在錯誤地讀取文件中的值。一個可以檢查,如果這句話是用下面的例子真:R錯誤地讀取文件中數值字段的值

一個樣本圖片/快照這也解釋了問題的地方就在這裏enter image description here

(1)複製粘貼以下10個號碼爲一個測試文件(樣本。 CSV)

1000522010609612 
1000522010609613 
1000522010609614 
1000522010609615 
1000522010609616 
1000522010609617 
971000522010609612 
1501000522010819466 
971000522010943717 
1501000522010733490 

(2)使用read.csv閱讀這些內容轉換爲R

X <- read.csv("./test.csv", header=FALSE) 

(3)打印輸出

print(head(X, n=10), digits=22) 

我得到的輸出是

      V1 
1  1000522010609612.000000 
2  1000522010609613.000000 
3  1000522010609614.000000 
4  1000522010609615.000000 
5  1000522010609616.000000 
6  1000522010609617.000000 
7 971000522010609664.000000 
8 1501000522010819584.000000 
9 971000522010943744.000000 
10 1501000522010733568.000000 

的問題是,行7,8,9,10不正確(檢查樣本,我們之前認爲10號)。

可能是什麼問題?有沒有一些設置,我失蹤與我的R - 終端?

+0

它的工作原理都適合我... – user1981275 2014-12-06 11:06:52

+0

我檢查上面有R工作室和R控制檯。它不適用於我:-( – acc 2014-12-06 11:08:05

+0

您需要了解計算機中的整數限制和浮點表示,正如akrun在他的回答中所暗示的那樣。 – 2014-12-06 13:46:41

回答

1

你可以嘗試

library(bit64) 
x <- read.csv('sample.csv', header=FALSE, colClasses='integer64') 
x 
#     V1 
#1  1000522010609612 
#2  1000522010609613 
#3  1000522010609614 
#4  1000522010609615 
#5  1000522010609616 
#6  1000522010609617 
#7 971000522010609612 
#8 1501000522010819466 
#9 971000522010943717 
#10 1501000522010733490 

如果加載bit64,那麼你也可以嘗試從freaddata.table

library(data.table) 
x1 <- fread('sample.csv') 
x1 
#     V1 
#1: 1000522010609612 
#2: 1000522010609613 
#3: 1000522010609614 
#4: 1000522010609615 
#5: 1000522010609616 
#6: 1000522010609617 
#7: 971000522010609612 
#8: 1501000522010819466 
#9: 971000522010943717 
#10: 1501000522010733490 
+0

我正在從數據庫檢索大整數到R(使用RJDBCs的dbGetQuery方法)似乎是自動將數據轉換爲數據損壞的數據(對於bigints)任何關於如何解決上述問題的建議,特別是當我們使用使用RJDBC包的dbGetQuery? – acc 2014-12-06 14:00:32

+0

@acc對不起,我沒有使用'RJDBC'軟件包的經驗,你可以把它作爲一個新的文章嗎? – akrun 2014-12-06 14:03:53

+0

做到這裏http://stackoverflow.com/questions/27332693/rjdbc-wrongly-reading-bigintegers-from-database-table – acc 2014-12-06 14:28:09