您好在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()
,但它回复了错误。
如何导入文件并阅读所有行?
答案 0 :(得分:1)
这是一种将其解析为整数列表的方法。将来使用save
和load
可以使您受益。
# 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)
您还可以使用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))
}))