36

我很难让 R 读取包含撇号的 .txt 或 .csv 文件。

我的一些专栏包含描述性文字,例如“关注客户需求”或“警长的副手”。我的文件在 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 新手,如果有任何帮助,我将不胜感激。

4

3 回答 3

38

默认情况下,read.table将单引号和双引号视为引号字符。您需要添加quote="\""到您的read.table通话中。或者,您可以只使用read.csv,默认情况下它只将双引号视为引号字符。

于 2012-03-08T15:41:32.713 回答
9

从长远来看,彻底研究 ?read.table 中的选项会有所收获。引用字符的默认值是 quote = "\"'",在 R 解析该表达式后,它实际上只有两个字符,单引号和双引号。您可以使用 . 将它们从考虑中删除quotes=NA。有时还需要删除'comment.char' 默认为“#”,将 'as.is' 更改为 TRUE 以防止字符串转换为因子可能会有所帮助。

于 2012-03-08T15:47:37.640 回答
1

在 read.table 中设置参数 quote="\\" 应该可以解决问题。

于 2014-08-24T08:14:59.947 回答