我正试图使用fread()函数从data.table包中读取一个脏的CSV文件,但是在字符串值中嵌入了双引号和逗号,也就是说,引号字段中存在未替换的双引号。下面的示例数据说明了我的问题。它由3行6列组成,第一行包含列名:
"SA","SU","CC","CN","POC","PAC"
"NE","R","000","H "B", O","1","8"
"A","A","000","P","E,5","8"
第一个问题出现在第2行,其中嵌入了一对双引号和一个逗号:
"H "B", O"
. 第二个问题在第3行,双引号中有一个逗号:
"E,5"
. 我尝试了以下方法:
library(data.table)
x1 <- fread(file = "example.csv", quote = "\"")
输出:
> x1
V1 "SA" "SU" "CC" "CN" "POC" "PAC"
1: "NE" "R" 0 "H "B" O" "1" 8
2: "A" "A" 0 "P" "E 5" 8
不带引号(例如,字段分隔符不出现在任何
字段),请尝试引用“”以避免此警告。检测到6个列名,但
猜测为行名或
索引。如果此猜测不正确,请在后面使用setnames(),或者
修复创建文件的文件写入命令以创建有效的
文件。
结论:结果不正确,因为它增加了一个新的列
V1
尝试2
x2 <- fread(file = "example.csv", quote = "")
输出:
> x2
V1 "SA" "SU" "CC" "CN" "POC" "PAC"
1: "NE" "R" "000" "H "B" O" "1" "8"
2: "A" "A" "000" "P" "E 5" "8"
信息:
检测到6列名称,但数据有7列(即无效
猜测为行名或索引。如果出现以下情况,请在后面使用setnames()
猜测不正确,或者修复创建
..
我要寻找的是一种方法,以获得类似的输出
> x3
SA SU CC CN POC PAC
1: NE R 0 H 'B', O 1 8
2: A A 0 P E,5 8