2017-01-17 11 views
1

Ich versuche, eine CSV-Datei zu lesen, die mit Zitaten in jeder Zelle sieht wie folgt aus CSV-Datei mit R data.table fread zitiert:
„a“, „b“
„1“, "hallo"
"2", "hallo, test"las voll

Mit read.csv() funktioniert es gut mit Spalte "a" des Typs Integer. Mit der data.table :: fread() -Spalte ist "a" jedoch vom Typ Zeichen.

x <- fread("\"a\",\"b\"\n\"1\",\"hello\"\n\"2\",\"hello, test\"") 
summary(x) 

    a     b    
Length:2   Length:2   
Class :character Class :character 
Mode :character Mode :character 

Gibt es eine Möglichkeit, fread zu informieren, die Spaltentypen in vollständig zitierten CSV-Dateien zu bestimmen?

+2

Sie könnten die Spaltenklassen mit dem 'colClasses'-Parameter angeben. Siehe '' fread'. – Jaap

+0

Um die Typen über den colClasses-Parameter anzugeben, müsste ich sie im Voraus kennen, aber ich weiß es nicht. Das kleine Beispiel oben dient nur zur Veranschaulichung, wie das Format aussieht. Meine eigentliche Eingabedatei hat Hunderte von Spalten. –

+0

Sie können 'x [, names (x): = lapply (.SD, type.convert)]' verwenden, um nachträglich zu konvertieren. Vielleicht sollte dieser Schritt als Option hinzugefügt werden, um ... – Frank

Antwort

2
x <- fread("\"a\",\"b\"\n\"1\",\"hello\"\n\"2\",\"hello, test\"") 
x[, names(x) := lapply(.SD, type.convert, as.is = TRUE)] 
summary(x) 

    a    b    
Min. :1.00 Length:2   
1st Qu.:1.25 Class :character 
Median :1.50 Mode :character 
Mean :1.50      
3rd Qu.:1.75      
Max. :2.00