2016-07-27 4 views
0

Привет, создайте файл списка в R, а затем я сохранил его с помощью write.table() в file.txt.Прочтите список, который был сохранен как .txt в R

Теперь я хотел бы импортировать файл.txt в R, но у меня проблемы с этим.

Список в файле file.txt выглядит так (открытие его с помощью Notes of 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) 

Я пытался использовать read.table(), но он отвечает с сообщением об ошибке.

Как я могу импортировать файл и читать все строки?

+1

Сохранение с использованием формата R, такие как .rdata или выстр могли бы работать лучше для вас – Raad

ответ

1

Вот способ разобрать это в список целых чисел. В будущем вы выиграете, используя save и load в будущем.

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

readLines функция считывает в каждой строке в виде строки и возвращает вектор символов и удаляет gsub «с (» и «)». Затем он подается в strsplit, который разбивается на «,» и возвращает список векторов символов, который подается на lapply, который преобразует эти векторы в целые числа с as.integer.

+0

Это работает очень хорошо! –

0

Вы также можете использовать комбинацию из parse, eval и cbind:

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

theoutput <- do.call(cbind,lapply(gsub(".*(?=c)","",text_data,perl = T), function(x) { 
    eval(parse(text=x)) 
})) 
Смежные вопросы