读取已在R中保存为.txt的列表

时间:2016-07-27 16:30:27

标签: r list import

您好在R中创建一个列表文件,然后我使用write.table()将其保存到file.txt。

现在,我想在R中导入file.txt,但我在这方面遇到了问题。

file.txt中的列表是这样的(用Windows的Notes打开它)。

"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(),但它回复了错误。

如何导入文件并阅读所有行?

2 个答案:

答案 0 :(得分:1)

这是一种将其解析为整数列表的方法。将来使用saveload可以使您受益。

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

readLines函数以字符串形式读取每一行,并返回一个字符向量,gsub删除“c(”和“)”。然后将其传送到strsplit,它在“,”上分割,并返回一个字符向量列表,这些字符向量被馈送到lapply,后者将这些向量转换为as.integer的整数。

答案 1 :(得分:0)

您还可以使用parseevalcbind的组合:

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

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