2017-07-10 5 views
1

元の数値は825010211307012から825010304926185までの整数です。 fread()は、すべての数字を4.076092e-309に変えます。fread()は4.076092e-309として大きな数値を読み取ります

read.tableは正常に動作しますが、大量のデータを読み込む必要がありますので使用できません。

このエラーを修正するにはどうすればよいですか?前

:あなたはbit64パッケージをインストールした場合

+0

関連:https://stackoverflow.com/questions/44973544/data-tablefread-silently-corrupts-long-integers – Scarabee

+0

Githubの問題はここにあります:https: //github.com/Rdatatable/data.table/issues/2250 – Scarabee

+0

@Scarabee IMHO、https://github.com/Rdatatable/data.table/issues/2250は、より大きい整数> 2を扱うのでここでは関係ありません^ 63は 'bit64'パッケージでは処理できません。https://github.com/Rdatatable/data.table/issues/1618とhttp://stackoverflow.com/questions/32339636/long-数字文字としての文字列 – Uwe

答えて

3

そしてfreadは、これらの大きな整数を読み取るためにそれを使用します次に

> install.packages("bit64") 

> fread("./bignums.txt") 
       V1 
1: 4.076092e-309 
2: 4.076092e-309 

マジックを行い

> fread("./bignums.txt") 
       V1 
1: 825010211307012 
2: 825010304926185 

freadは、64ビット整数にそれらを読んでいます

> fread("./bignums.txt")$V1 
integer64 
[1] 825010211307012 825010304926185 

私にはわからない、なぜfread誤読それらをbit64は使用できません。私は少なくとも警告を期待しています...

+2

https://github.com/Rdatatable/data.table/blob/master/NEWS.mdによると、これは開発バージョン1.10.5で修正されています:_ fream() print64()はinteger64のカラムは存在するが、パッケージbit64はインストールされていないので、意図したとおりに警告が表示される。 – Uwe

関連する問題