2016-04-08 10 views
2

Ich habe eine Menge von Daten-Dateien wie folgt formatiert:R read.table, jede Zeile in einer Halterung

{1, 2, 3, 4, 3, 4, 3} 
{0, 1, 3, 4, 5, 4, 2} 
{1, 2, 3, 7, 5, 8, 6} 

Gibt es eine Möglichkeit für read.table (oder was auch immer Importfunktion), um diese Daten zu lesen? Zwischen den Klammern und den Zahlen ist kein Leerzeichen, daher kann ich sie nicht als Zeichenspalten behandeln.

+3

, wenn Ihre Daten in test1 stroed ist .txt, dann 'read.table (text = gsub (" [} {] "," ", readLines (" test1.txt ")), sep =", ")' ... muss ein dup sein – user20650

+1

On linux , 'data.table :: fread (" cat-Datei | tr -d '{}' ")' ' –

Antwort

2

Schreiben Sie Ihre Daten

txt <- 
"{1, 2, 3, 4, 3, 4, 3} 
{0, 1, 3, 4, 5, 4, 2} 
{1, 2, 3, 7, 5, 8, 6}" 

cat(txt, file="test1.txt") 

lesen

read.table(text=gsub("[}{]", "", readLines("test1.txt")), sep=",") 

readLines in Ihren Daten liest die Daten in einer Textzeile.

readLines("test1.txt") 
#[1] "{1, 2, 3, 4, 3, 4, 3}" "{0, 1, 3, 4, 5, 4, 2}" "{1, 2, 3, 7, 5, 8, 6}" 

Sie können dann gsub verwenden, um die geschweiften Klammern zu entfernen.

gsub("[}{]", "", readLines("test1.txt")) 
#[1] "1, 2, 3, 4, 3, 4, 3" "0, 1, 3, 4, 5, 4, 2" "1, 2, 3, 7, 5, 8, 6" 

können Sie die Verwendung read.table, fast wie gewohnt, aber Sie passieren die Zeichenfolge an den text Argument.


Auch aus (aka) Hadd E. Nuff, für den Einsatz auf Linux-Systemen

data.table::fread("cat test1.txt | tr -d '{}'") 

und in der gleichen Art und Weise, ohne Pakete

read.table(pipe("cat test1.txt | tr -d '{}'"), sep=",") 
Verwandte Themen