2014-07-22 25 views
0

我在R中的read.table函數有一個問題。我知道這可能是一個常見問題,但徹底搜索這個論壇和Web一般沒有幫助我修復它。 我有一個.txt文件,由253列和458800行組成,由製表符分隔。我想使用此代碼讀取到R:R:Read.table難度與不完整製表符已刪除數據

>data<-read.table("file.txt, header=TRUE,nrows=100,sep="\t") 

>names<-colnames(data) 

>classes<-sapply(data[1,],class) 

>data<-read.table("file.txt",colClasses=classes,col.names=names,header=TRUE,nrows=460000,sep="\t",fill=TRUE) 

然而,當我使用九月=「\ t」的說法,R跳過大約一半的排隨機,只加載24萬行,如果我不」 t使用sep =「\ t」參數加載所有行,但列不正確。它也給出了一個警告消息,指出col.names中的列數與頭中的頭數不匹配= TRUE

我認爲問題可能是在.txt文件中有些字段是空白的,這些字段是剛剛空的,所以沒有空格,NA或任何東西,例如:

field1的 「\ t」 的FIELD2 「\ t」 的 「\ t」 的字段4 「\ t」 的(場3是空的)

我從第三方那裏得到了這個文件,並沒有對它進行任何修改。 任何人都可以幫我解決這個問題嗎?

由於提前,

+0

你試過用'read.delim'嗎?我不知道如何處理空的領域,但你可以試試看。 –

+0

也可以看一下'read.delim'中的'fill'參數,如果指定'fill = TRUE',可能會有效。 –

+0

不幸的是,我已經嘗試了填充參數,它改變了列,但他們仍然是錯誤的。 –

回答

0

您是否嘗試過包data.table?它有一個檢測分隔符的方法fread。你可以嘗試這樣:

library(data.table) 
data<-fread("file.txt) 

讓我知道這是否有幫助。

謝謝