Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fread在不必要时转义引号_R_Csv_Escaping_Fread_Quote - Fatal编程技术网

fread在不必要时转义引号

fread在不必要时转义引号,r,csv,escaping,fread,quote,R,Csv,Escaping,Fread,Quote,我正在使用fread函数读取带引号字段的csv文件。在某些字段中会出现转义引号(\“)。我不明白为什么fread函数会转义这些已经转义的引号 我用一个简单的例子再现了这种行为。我创建了一个文件,其中只有一行和一个字段: "Hello \"World\" " 如果我运行以下R命令: table <- fread(input = "/tmp/quoteprova.csv", header=FALSE, sep = "\t") 相反,我期望的结果是: V1 1

我正在使用
fread
函数读取带引号字段的csv文件。在某些字段中会出现转义引号(
\“
)。我不明白为什么
fread
函数会转义这些已经转义的引号

我用一个简单的例子再现了这种行为。我创建了一个文件,其中只有一行和一个字段:

"Hello \"World\" "
如果我运行以下R命令:

table <- fread(input = "/tmp/quoteprova.csv", header=FALSE, sep = "\t")
相反,我期望的结果是:

                V1
1: Hello \"World\" 

我是否缺少指定一些选项以获得预期的行为?

您正在获得所需的。
\\“
是两个字符:一个普通字符
\
和一个
。因为
\
用于转义特殊字符,
\*
将被解释为使用
\
转义的特殊字符。在附加的
\
(第一个)之前,这里将告诉您,第二个
\
不用于转义
,应按原样处理

请参见此示例:

> nchar('\\"')
[1] 2
> nchar('\"')
[1] 1

谢谢你的回答。但我不同意。如果fread正在读取一个csv文件,其中字段被双引号括起来,那么应该预期在该csv文件中,字段内的双引号已经转义(否则它无法正确读取该文件)因此,fread函数没有必要转义双引号time@rlar,原始答案中的链接不正确。请查看更新的链接。我们应该区分“字符串”和“字符串表示”。
fread
没有再次转义它。而是R转义“\为了告诉您“\”只是一个“\”,不用于显示它后面的字符。
> nchar('\\"')
[1] 2
> nchar('\"')
[1] 1