2016-07-27 10 views
0

Hi erstellen Sie eine Listendatei in R und dann speicherte ich sie mit write.table() in file.txt.Eine Liste lesen, die als .txt gespeichert wurde in R

Nun möchte ich die Datei.txt in R importieren, aber ich habe Probleme damit.

Die Liste in der Datei.txt ist wie folgt (mit Notes von Windows).

"1" c(133, 292, 460, 603, 762, 929, 1027, 1060, 1199, 1373, 1523, 1698, 1875) 
"2" c(145, 322, 475, 654, 790, 922, 1085, 1251, 1411, 1451, 1562, 1737, 1861) 
"3" c(142, 308, 370, 473, 612, 765, 920, 1096, 1225, 1374, 1501, 1640, 1771, 1878) 
"4" c(146, 324, 389, 464, 611, 748, 914, 1048, 1203, 1338, 1499, 1672, 1823) 
"5" c(146, 287, 329, 482, 659, 815, 843, 980, 1157, 1315, 1450, 1585, 1756, 1866, 1898) 
"6" c(133, 259, 443, 590, 772, 917, 996, 1059, 1081, 1206, 1365, 1523, 1690, 1845) 

habe ich versucht, read.table() zu verwenden, aber es antwortet mit einem Fehler.

Wie kann ich die Datei importieren und alle Zeilen lesen?

+1

Speichern eines R-Format wie .rdata oder rds besser für Sie – Raad

Antwort

1

Hier ist eine Möglichkeit, dies in eine Liste von ganzen Zahlen zu analysieren. Sie würden zukünftig von save und load in Zukunft profitieren.

# read in file 
myList <- gsub("(^.*\\ c\\(|\\)$)", "", readLines("<path>/<fileName>")) 
# get integer list 
myList <- lapply(strsplit(myList, split=", "), as.integer) 

readLines Die Funktion liest in jeder Zeile als eine Zeichenfolge und gibt einen Zeichenvektor und gsub abstreift „c (“ und „)“. Dieser wird dann an strsplit übergeben, der auf das "," aufteilt und eine Liste von Zeichenvektoren zurückgibt, die lapply zugeführt wird, die diese Vektoren mit as.integer in Ganzzahlen umwandelt.

+0

Es ist wirklich gut funktionieren könnte funktioniert! –

0

Sie können auch eine Kombination von parse, eval verwenden und cbind:

text_data <- readLines(file("file.txt")) 

theoutput <- do.call(cbind,lapply(gsub(".*(?=c)","",text_data,perl = T), function(x) { 
    eval(parse(text=x)) 
}))