我无法读取包含如下行的文件在 R 中。
"_:b5507F4C7x59005","Fabiana D\"atri"
有什么想法吗?我怎样才能让 read.table 理解\"是引号的转义符?
干杯,
亚历山大
最佳答案
在我看来 read.table/read.csv
无法处理 转义引号。
...但我想我有一个(丑陋的)解决方法,灵感来自@nullglob;
(这不会处理嵌入式
,
,正如@Ben Bolker 指出的那样)测试文件如下所示(我添加了一个非字符串列以进行良好测量):
13,"foo","Fab D\"atri","bar"
21,"foo2","Fab D\"atri2","bar2"
这是代码:
# Generate test file
writeLines(c("13,\"foo\",\"Fab D\\\"atri\",\"bar\"",
"21,\"foo2\",\"Fab D\\\"atri2\",\"bar2\"" ), "foo.txt")
# Read ignoring quotes
tbl <- read.table("foo.txt", as.is=TRUE, quote='', sep=',', header=FALSE, row.names=NULL)
# Go through and cleanup
for (i in seq_len(NCOL(tbl))) {
if (is.character(tbl[[i]])) {
x <- tbl[[i]]
x <- substr(x, 2, nchar(x)-1) # Remove surrounding quotes
tbl[[i]] <- gsub('\\\\"', '"', x) # Unescape quotes
}
}
然后输出是正确的:
> tbl
V1 V2 V3 V4
1 13 foo Fab D"atri bar
2 21 foo2 Fab D"atri2 bar2
关于r - 如何使用 R 中的 read.table 读取\"双引号转义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066664/