aktualizacji paź 2014: Teraz w v1.9.5
fread
teraz akceptuje dec=','
(i innych nie-” "separatory dziesiętne", #917. Nowy akapit został dodany do ?fread
. Jeśli znajdujesz się w kraju, który używa dec=','
, powinien po prostu działać. Jeśli nie, musisz przeczytać akapit, aby wykonać dodatkowy krok. W przypadku, gdy w jakiś sposób zepsuje się dec='.'
, tę nową funkcję można wyłączyć za pomocą options(datatable.fread.dec.experiment=FALSE)
.
Poprzednia odpowiedź ...
Matt Dowle znaleźć ładne obejście z lokalizacjach. Pierwszy mój 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
...
Próby Poniżej przedstawiono winowajcę:
Sys.localeconv()["decimal_point"]
decimal_point
"."
Próbując ustawić LC_NUMERIC pracował na Ubuntu (Matthew) i 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
zachowanie jest w porządku i zmienia się:
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
"." separatory dziesiętne są teraz ładowane jako łańcuchy (tak jak powinno), wcześniej było odwrotnie.
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
Jako obejście można zastąpić szybkim edytorem tekstu. – Roland
Powiedziałbym "zapytaj opiekuna pakietu", zwłaszcza, że ta funkcja jest w fazie rozwoju: http://stackoverflow.com/questions/14124813/data-table-fread-function –
Dziękuję Roland, ale mam wiele plików plus kilka ciągów może posiadać ',' w przyszłości ... i tak naprawdę nie chcę ich zmieniać. Dzięki za propozycję – statquant