2016-07-12 4 views
1

Ich habe eine sehr lange Komma getrennte Zeichenfolge, die ich als Spaltenvektor in R lesen möchte. Ich habe versucht, es als Tabelle zu lesen, frage mich, ob ich einfach transponieren könnte das, aber das Lesen in die Tabelle dauert ewig.Lesen einer langen, durch Komma getrennten Zeile zu einer Spalte in R

col = read.table("filename.csv", sep = ",", header=FALSE) 
colT = t(col) 

Die Zeichenfolge ist riesig und hat 2,7 Millionen Einträge getrennt durch Kommas. Daher kann es nicht in einem Texteditor behandelt werden und der Versuch, "," durch "\ n" zu ersetzen, war sinnlos. Kann ich das in R machen?

+1

'? Scan' ist das Eingeweide 'read.table' und wird wahrscheinlich auch wesentlich schneller sein. – thelatemail

+0

Haben Sie 'read_csv' im' readr' Paket probiert? – Tung

+0

Nein, habe ich nicht. Ich versuche –

Antwort

3

?scan wird für diese Art von Sache ziemlich schnell sein.

tmp <- paste(paste0(letters,1:2.7e6),collapse=",") 
system.time(scan(text=tmp, what=character(1), sep=",")) 
#Read 2700000 items 
# user system elapsed 
# 1.15 0.00 1.16 
3

Wir fread

library(data.table) 
fread("filename.csv", header=FALSE) 

tmp <- paste(paste0(letters,1:2.7e6),collapse="\n") 
system.time(fread(tmp, header=FALSE)) 
# user system elapsed 
# 0.87 0.00 0.88 

verwenden können, wenn die Daten der OP , haben und nicht \n, können wir gsub verwenden als @thelatemail

erwähnt
fread(gsub(",","\n",tmp),header=FALSE) 
+1

Brauchen Sie nicht etwas wie 'fread (gsub (", "," \ n ", tmp), header = FALSE)' weil OP keine Zeilenumbrüche in ihren Daten hat? – thelatemail

Verwandte Themen