【发布时间】:2011-08-27 07:11:57
【问题描述】:
考虑以下逗号分隔的文件。为简单起见,让它包含一行:
'I am quoted','so, can use comma inside - it is not separator here','but can\'t use escaped quote :=('
如果你尝试用命令读取它
table <- read.csv(filename, header=FALSE)
该行将被分成 4 个部分,因为该行包含 3 个逗号。事实上,我只想阅读 3 个部分,其中一个包含逗号本身。有报价旗来寻求帮助。我试过了:
table <- read.csv(filename, header=FALSE, quote="'")
但这会出现错误"incomplete final line found by readTableHeader on table"。这是因为奇数(七)个引号引起的。
read.table() 和 scan() 具有参数 allowEscapes,但将其设置为 TRUE 无济于事。没关系,您可以从help(scan) 阅读:
被解释的转义符是控制字符 '\a, \b, \f, \n, \r, \t, \v', ... ...任何其他逃脱 字符被视为自身,包括反斜杠
请建议您如何阅读此类引用的 csv 文件,其中包含转义的 \' 引号。
【问题讨论】:
-
我理解你想要做什么,但我很困惑你为什么要使用
read.csv():这不是一个 CSV 文件,没有多列,它只是一个块文本,尽管带有引号。您是说行是否分开,为什么不直接使用readLines(...,n=1)?您必须表示它是包含转义引号的多行文本。 -
我发现这真的很烦人。 Write.table 将输出带有引号的字符串作为转义的
\"但 read.table 无法解释这些。如果 R 无法读取,为什么要默认以这种格式编写它们?!
标签: r escaping quotes multiline read.csv