2010-08-09 76 views
0

好吧,我試圖用 this方法讓我的數據轉換成R,但我一直得到錯誤:閱讀多個.txt文件與R中頭

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 1 did not have 22 elements 

這是腳本我運行:

library(foreign) 

setwd("/Library/A_Intel/") 

filelist <-list.files() 

#assuming tab separated values with a header  
datalist = lapply(filelist, function(xx)read.table(xx, header=T, sep=";")) 

#assuming the same header/columns for all files 
datafr = do.call("rbind", datalist) 

請記住,我的工作重點是:

  1. 從一個.txt文件中讀取
  2. 將標頭與內容關聯
  3. 從多個文件讀取。

謝謝!

回答

1

看起來你正在嘗試讀取的一個文件的列數與標題列數相同。要讀取此文件,您可能必須更改此文件的標題,或者使用更合適的列分隔符。要查看哪些文件導致了問題,你可以試試:

datalist <- list() 
for(filename in filelist){ 
    cat(filename,'\n') 
    datalist[[filename]] <- read.table(filename, header = TRUE, sep = ';') 
} 

另一種選擇是讓該文件的內容,並單獨報頭:

datalist[[filename]] <- read.table(filename, header = FALSE, sep = ';') 
thisHeader <- readLines(filename, n=1) 
## ... separate columns of thisHeader ... 
colnames(datalist[[filename]]) <- processedHeader 

如果你不能得到read.table到工作時,您可以始終使用readLines並手動提取文件內容(例如,使用strsplit)。

1

要保持在避免了循環加載所有數據前的初始完整性檢查的精神可以用

lapply(filelist, function(xx){ 
     print (scan(xx, what = 'character', sep=";", nlines = 1))}) 

(假設你的頭與分離來完成「;」這可能並非如此)