2016-09-12 61 views
1

我有一個數據文件,其中有21行,但沒有。每列中的列是不同的。第一列是標題,其餘列有數字。防止R在數據導入時將列拆分爲行

Full text file is here.

所以,我用導入文件:d <- read.table("data.txt", sep = " ", fill=T)。但是當我使用view()查看數據時,我發現有一列有很多列(160,000+)被分成3行。 A picture showing this phenomenon is here.

爲什麼R這樣做?我該如何解決這個問題才能得到21行?我會很感激任何幫助/指針。我在具有16 GB內存的Windows 7上使用R Studio(64位)。

此外,我在發帖前環顧四周,但沒有多少運氣。 '重塑'包似乎起初有一些幫助,但我無法真正使用它來滿足我的需求。任何提示在導入或導入後解決問題將不勝感激。謝謝。

+0

如果您發佈'dput(d)'這將是有用的,所以我們可以導入你的數據集,而不是讓你的數據的屏幕截圖。 –

+0

這是一個相當長的文件。相反,我添加了一個鏈接到文本文件。 – berge2015

+2

似乎與[this](http://stackoverflow.com/questions/1874443/import-data-into-r-with-an-unknown-number-of-columns),這是關於如何'read.table'決定了最大列數。有些答案可以嘗試。 – aosmith

回答

0

出現這種情況的原因是read.table只檢出test.txt的前5行以確定行的最大長度。在你的數據中,第九行超過了最大值,因此顯示出一些奇怪的行爲。

您可以通過告知read.table應該創建多少個列,方法是給它們起一個名稱,如this answer。每行元素在一些可以使用count.fields找到數:

# Find the number of elements per line in test.txt 
perline <- count.fields("test.txt", sep = " ") 
maxlength <- max(perline) 

# Read in test.txt 
d <- read.table("test.txt", sep = " ", 
       row.names = 1, col.names = 1:maxlength, 
       fill = TRUE) 
+0

不錯!告訴它使用列的最大數目似乎完全是想要的。謝謝肯。還要感謝@aosmith。 – berge2015