7

freadfromを使用しdata.tableてcsvファイルを読み込みます。ただし、私のcsvファイルはdec=","小数点記号として使用します(1.23になります1,23)。とは異なり、許可されたパラメータではないread.csvようです。dec

R) args(fread)
function (input = "test.csv", sep = "auto", sep2 = "auto", nrows = -1,
    header = "auto", na.strings = "NA", stringsAsFactors = FALSE,
    verbose = FALSE, autostart = 30)

私が使用できるようにする回避策(設定するRオプションがあります)がありますかfread(非常に高速なので、多くの時間を節約できます)?

PS:colClassesまだ実装されていないため、この投稿setAsのように使用することはできません

4

1 に答える 1

8

2014 年 10 月の更新: v1.9.5 になりました

fread# 917 . dec=','_ に新しい段落が追加されました。を使用している国にいる場合は、うまくいくはずです。そうでない場合は、段落を読んで追加の手順を実行する必要があります。何らかの形で壊れた場合、この新機能は でオフにすることができます。?freaddec=','dec='.'options(datatable.fread.dec.experiment=FALSE)



以前の回答...

Matt Dowle は、ロケールに関する優れた回避策を見つけました。まず私のsessionInfo

sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252    LC_MONETARY=French_France.1252 LC_NUMERIC=C
[5] LC_TIME=C
...

以下を試すと、犯人が示されます。

Sys.localeconv()["decimal_point"]
decimal_point 
          "." 

LC_NUMERIC を設定しようとすると、Ubuntu(Matthew) と WinXP(me) で機能しました

Sys.setlocale("LC_NUMERIC", "French_France.1252")
[1] "French_France.1252"
Message d'avis :
In Sys.setlocale("LC_NUMERIC", "French_France.1252") :
  changer 'LC_NUMERIC' peut résulter en un fonctionnement étrange de R

動作は問題なく、次のように変更されます。

DT = fread("A,B\n3,14;123\n4,22;456\n",sep=";")
str(DT)
Classes ‘data.table’ and 'data.frame':  2 obs. of  2 variables:
 $ V1: num  3.14 4.22
 $ V2: int  123 456

「。」小数点記号が文字列として読み込まれるようになりました (そうあるべきです)。以前は逆でした。

DT = fread("A,B\n3.14;123\n4.22;456\n",sep=";")
str(DT)
Classes ‘data.table’ and 'data.frame':  2 obs. of  2 variables:
 $ V1: chr  "3.14" "4.22"
 $ V2: int  123 456
于 2013-01-23T09:16:16.500 に答える