2017-07-18 6 views
0

Ich habe eine CSV-Datei mit Nicht-ASCII-Zeichen drin. Ich möchte einfach diese Zeichen entfernen und meine CSV-Datei lesen.Überspringe nur Nicht-ASCII-Zeichen mit read.table

> tables <- lapply('/.././abc.csv', read.csv,header=F,stringsAsFactors=FALSE,fileEncoding="UTF-8") 
Warning message: 
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : 
    invalid input found on input connection '/.././abc.csv' 
> df= suppressWarnings(do.call(rbind, tables)) 

Es wird nicht die komplette Datei gelesen. Es hat nur die Datensätze vor dem Nicht-ASCII-Zeichen gelesen. Es hat alle Datensätze nach dem Nicht-ASCII-Zeichen übersprungen.

Ich kann iconv('/.././abc.csv', "latin1", "ASCII", sub="") nicht verwenden, da es X als Vektor erwartet.

cat '/.././abc.csv' 
88036,120,151036.656250,2017-07-17 22:27:49,17-07-17 22:27:49 
88036,120,151036.671875,2017-07-17 22:27:53,17-07-17 22:27:53 
88036,310,151036.687500,2017-07-17 22:27:58,17-07-17 22:27:58 
88036,310,151036.703▒▒F▒▒B▒▒▒D▒%▒▒▒2▒T▒▒K222642,17-07-17 22:28:03,2017-07-17 22:28:03 
88036,310,151036.484375,2017-07-17 22:26:54,17-07-17 22:26:54 
88036,310,151036.500000,2017-07-17 22:26:59,17-07-17 22:26:59 

Es überspringt letzten 2 Datensätze nach dem Lesen der CSV-Dateien. Irgendeine Hilfe.

Antwort

0

Was ist, wenn Sie es zuerst gelesen und dann tun Sie

td <- td[,lapply(.SD,function(x){ iconv(x, "latin1", "ASCII", sub="")})]

davon aus, dass Sie Ihre CSV-Datei als data.table

lesen
Verwandte Themen