Ich habe a CSV file (24.1 MB), die ich nicht vollständig in meine R-Sitzung einlesen kann. Wenn ich die Datei in einem Tabellenkalkulationsprogramm öffne, kann ich 112.544 Zeilen sehen. Wenn ich es in R mit read.csv
lesen erhalte ich nur 56.952 Zeilen und diese Warnung:read.csv warning 'EOF innerhalb der Zeichenfolge in Anführungszeichen' verhindert das vollständige Lesen der Datei
rl <- readLines(file("citations.CSV", encoding = "utf-8"))
length(rl)
[1] 112545
Aber ich kann nicht erhalten diese zurück:
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
ich die ganze Datei in R mit readLines
lesen in R als Tabelle (über 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
wie kann ich lösen oder Abhilfe dieses EOF-Nachricht, die ganze (was eher ein Fehler als eine Warnung zu sein scheint) Datei in meine R
Sitzung?
Ich habe ähnliche Probleme mit anderen Methoden zum Lesen von CSV-Dateien:
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")
Hier ist meine Session()
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
Danke, das ist eine einfache Lösung. Was denkst du darüber, wie "Freed" in dieser Situation funktioniert? Ich bevorzuge das, weil es viel schneller ist als 'read.csv'. Aber "fread" scheint kein "Quote" -Argument zu haben. – Ben
@Ben Ich habe versucht, es auch ohne Erfolg funktionieren zu lassen und wie du darauf hingewiesen hast, "fread" spielt nicht gut mit eingebetteten Zitaten im Allgemeinen, aber ich bin mir sicher, dass es bald eine Abhilfe geben wird. http://stackoverflow.com/questions/16094025/data-tablefread-and-unbalanced – dickoa
Ich sehe, vielen Dank für die Überprüfung. – Ben