J'ai un fichier CSV (24,1 Mo) que je ne peux pas lire complètement dans ma session R. Lorsque j'ouvre le fichier dans un tableur, je peux voir 112 544 lignes. Quand je le lis dans R avec, read.csv
je n'obtiens que 56,952 lignes et cet avertissement:
cit <- read.csv("citations.CSV", row.names = NULL,
comment.char = "", header = TRUE,
stringsAsFactors = FALSE,
colClasses= "character", encoding= "utf-8")
Warning message:
In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
EOF within quoted string
Je peux lire tout le fichier en R avec readLines
:
rl <- readLines(file("citations.CSV", encoding = "utf-8"))
length(rl)
[1] 112545
Mais je ne peux pas le ramener dans R en tant que table (via read.csv
):
write.table(rl, "rl.txt", quote = FALSE, row.names = FALSE)
rl_in <- read.csv("rl.txt", skip = 1, row.names = NULL)
Warning message:
In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
EOF within quoted string
Comment puis-je résoudre ou contourner ce message EOF (qui semble être plus une erreur qu'un avertissement) pour obtenir le fichier entier dans ma R
session?
J'ai des problèmes similaires avec d'autres méthodes de lecture de fichiers CSV:
require(sqldf)
cit_sql <- read.csv.sql("citations.CSV", sql = "select * from file")
require(data.table)
cit_dt <- fread("citations.CSV")
require(ff)
cit_ff <- read.csv.ffdf(file="citations.CSV")
Voici ma sessionInfo ()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] tools tcltk stats graphics grDevices utils datasets methods base
other attached packages:
[1] ff_2.2-11 bit_1.1-10 data.table_1.8.8 sqldf_0.4-6.4
[5] RSQLite.extfuns_0.0.1 RSQLite_0.11.4 chron_2.3-43 gsubfn_0.6-5
[9] proto_0.3-10 DBI_0.2-7
fread
travailler dans cette situation? Je préfère ça parce que c'est beaucoup plus rapide queread.csv
. Maisfread
ne semble pas accepter d'quote
argument.