我正在嘗試使用the following link中所述的固定寬度結構來讀取this file(3.8mb)。read.fwf和數字符號
此命令:
a <- read.fwf('~/ccsl.txt',c(2,30,6,2,30,8,10,11,6,8))
產生一個錯誤:
line 37 did not have 10 elements
複製與跳過選項的不同值的問題之後,我想通了線導致所有含有「#問題「符號。
有沒有辦法解決它?
我正在嘗試使用the following link中所述的固定寬度結構來讀取this file(3.8mb)。read.fwf和數字符號
此命令:
a <- read.fwf('~/ccsl.txt',c(2,30,6,2,30,8,10,11,6,8))
產生一個錯誤:
line 37 did not have 10 elements
複製與跳過選項的不同值的問題之後,我想通了線導致所有含有「#問題「符號。
有沒有辦法解決它?
正如@jverzani已經評論過的,這個問題可能是#號經常用作一個字符來表示評論的事實。將comment.char
輸入參數read.fwf
設置爲#以外的值可以解決問題。我將在下面留下我的答案,作爲一個更一般的情況,您可以使用任何導致問題的角色(例如荷蘭城市名稱's Gravenhage
中的's
)。
我有其他符號發生此問題。我採取的方法是簡單地將#替換爲無,或者由不會產生錯誤的字符替換。在我的情況下,簡單地替換角色是沒有問題的,但在你的情況下這可能是不可能的。
所以我的方法是刪除生成錯誤的符號或用另一個字符替換。這可以使用文本編輯器(查找和替換),使用R腳本或使用一些名爲grep
和sed
的Linux工具來完成。如果您想在R腳本中執行此操作,請使用scan
或readLines
來讀取這些行。一旦文本在內存中,您可以使用sub
替換字符。
如果你不能替換字符,我會嘗試下面的方法:用一個不會產生錯誤的字符替換字符,用read.fwf
將它讀入R,最後用#字符替換字符。
上面的答案隨訪:去讀取所有字符爲文字,同時使用comment.char=""
和quote=""
(後者負責@ PaulHiemstra的問題與荷蘭專有名詞的單引號)在調用read.fwf
(這記錄在?read.table
)。
在read.fwf中使用quote =「」時,出現錯誤:Error in read.table(file = FILE,header = header,sep = sep,row.names = row.names,: 正式參數「quote」與多個實際參數相匹配 – panterasBox 2015-10-19 17:04:18
you right - 'quote =「」'should not be necessary *,as'read.table' within internal called called'quote =「」'。如果您遇到問題但與此不同的是,繼續併發布另一個問題... – 2015-10-19 17:15:03
+1謝謝你寫了一個很好的問題,包括我們需要回答問題的信息。 – 2011-12-26 10:28:42