2016-07-27 40 views
0

您好在R中創建一個列表文件,然後使用write.table()將它保存到file.txt中。閱讀已保存爲.txt的列表R

現在,我想在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(),但它回答了錯誤。

如何導入文件並讀取所有行?

+1

保存使用R格式,如.RData或RDS可能更好地爲您 – Raad

回答

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整數。

+0

它的作品真的很好! –

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)) 
}))