2012-03-08 62 views
28

我很難讓R讀取包含撇號的.txt或.csv文件。如何將包含撇號的.csv文件讀入R?

我的一些專欄包含描述性文字,例如「出席顧客需求」或「警長的代理人」。我的文件在Excel中正確打開(即,所有數據都顯示在正確的單元格中;有3列和大約8000行,並且沒有丟失數據)。但是,當我問R鍵讀取該文件,這是發生了什麼:

data <-read.table("datafile.csv", sep=",", header=TRUE) 
    Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 520 did not have 3 elements 

(520線是包含一個單引號的第一行。)

如果我進入.txt或.csv文件並手動刪除所有的撇號,然後R讀取文件正確。但是,如果可以的話,我寧願保留撇號。

我是R新手,很感激任何幫助。

+0

即使我基本知道這一點,但我曾經在數據採集計算機中生成的csv文件中讀取「gotcha'd」時感到滿意,問題是,在一個相當大的頭文件塊裏面,文件有一些帶有對話框的字段(一個意想不到的事件)。有時你必須採取一個仔細看看源文件中的crapola。 – 2012-03-08 18:46:21

回答

31

默認情況下,read.table將單引號和雙引號視爲引用字符。您需要將quote="\""添加到您的read.table呼叫中。或者,您可以只使用read.csv,默認情況下只能將雙引號看作引號字符。

+1

感謝您的幫助。有趣的是,我無法得到你或迪文建議read.table工作的任何選項......但read.csv可以做到這一點! – user1257313 2012-03-09 19:25:13

+0

與'read.csv'的另一個區別是它的默認設置是'fill = TRUE' – 2015-02-12 03:00:49

8

徹底研究read.table中的選項將長期得到回報。引用字符的默認值是quote =「\」'「,在R解析表達式,單引號和雙引號後真的只有兩個字符。您可以使用quotes=NA來考慮刪除它們。有時還需要刪除'comment.char'默認爲「#」,並且將'as.is'更改爲TRUE可能會有所幫助,以防止將字符串轉換爲因子。

+4

我認爲現在應該是'quote = NULL'而不是'quotes = NA'截至最新版本。 – JayCo 2015-02-12 17:26:54

+0

我有同樣的問題,但試圖導入一個列表,其中必須保留在導入列表中的引號。使用quotes = NULL爲我工作(如下面的答案,quotes =「\\」)。我讚賞實際答案,而不是「閱讀幫助手冊,希望你能找到它,」謝謝。 < - read.table(「datafile.txt」,quote = NULL)和引號很好地通過 – 2015-02-19 05:17:16

1

將參數quote =「\\」設置爲read.table應該會訣竅

+1

好吧,它可能,但你知道你會做什麼? – 2015-08-20 01:02:23