2011-08-31 75 views
8

我有一個單獨的.txt文件,裏面有許多表格。有沒有辦法將它們中的每一個讀入它自己的數據框?每個「表」前面都有一個標題,所以我可以搜索這些標題。從單個文本文件中讀取多個表?

感謝您的幫助。

回答

2

你將要讀入整個文件,然後解析它爲你的表頭或空行。如果/當您對txt文件中的表進行更改時,我會將標題設置爲您設置的一個變量,並將其置於腳本的頂部,以供您輕鬆更改。

+0

好的,謝謝。所以我用'lines < - scan(inFile,what =「character」,sep =「\ n」)''來讀取整個事物。第一個表的第一行標題,第一行標題和第一列row.names。表中的數據部分總是32行。我如何抓住第一張桌子? – James

+2

我會用readLines(因爲我知道我會得到什麼),然後使用段作爲輸入:例如。函數read.table'(textConnection(行[2:33])' –

1

簡單的谷歌搜索返回這個。 爲我完美工作。

> x <- readLines(textConnection("1 
+ Pietje 
+ I1 I2 Value 
+ 1 1 0.11 
+ 1 2 0.12 
+ 2 1 0.21 
+ 
+ 2 
+ Jantje 
+ I1 I2 I3 Value 
+ 1 1 1 0.111 
+ 3 3 3 0.333")) 
> closeAllConnections() 
> start <- grep("^[[:digit:]]+$", x) 
> mark <- vector('integer', length(x)) 
> mark[start] <- 1 
> # determine limits of each table 
> mark <- cumsum(mark) 
> # split the data for reading 
> df <- lapply(split(x, mark), function(.data){ 
+  .input <- read.table(textConnection(.data), skip=2, header=TRUE) 
+  attr(.input, 'name') <- .data[2] # save the name 
+  .input 
+ }) 
> # rename the list 
> names(df) <- sapply(df, attr, 'name') 
> df 
$Pietje 
    I1 I2 Value 
1 1 1 0.11 
2 1 2 0.12 
3 2 1 0.21 

$Jantje 
    I1 I2 I3 Value 
1 1 1 1 0.111 
2 3 3 3 0.333 

Source