在 R 中用双引号读取文件
Reading files with double double quotes in R
我正在阅读几千个 csv 文件,其中一些列的格式非常 'interesting':{""Q0"":""double double quote""}
看起来 read.csv
读起来不错,但是 read_csv
和 fread
都在做不同的事情(见下文)。我的期望是:{"Q0":"double double quote"}
这是一个错误还是我做错了什么?
# Content of csv file
# "numbers", "simple_quote", "double_quote"
# "9", "quoted text", "{""Q0"":""double double quote""}"
library(readr)
library(data.table)
read.csv("test.csv")
#> numbers simple_quote double_quote
#> 1 9 quoted text {"Q0":"double double quote"}
read_csv("test.csv")
#> # A tibble: 1 x 3
#> numbers simple_quote double_quote
#> <dbl> <chr> <chr>
#> 1 9 quoted text "{\"Q0\":\"double double quote\"}"
fread("test.csv")
#> numbers simple_quote double_quote
#> 1: 9 quoted text {""Q0"":""double double quote""}
由 reprex package (v2.0.0)
于 2021-04-09 创建
只是为了将@MrFlick 和@r2evans 的评论合并到一个回复中,并按照@jens-piegsa 的建议包括我的最终解决方法。
这似乎是一个错误,至少在 data.table 前面:
- https://github.com/Rdatatable/data.table/issues/1109
- https://github.com/Rdatatable/data.table/issues/4779
在我的用例中,data.table 的速度优势很大,所以我添加了一个 gsub() 步骤来处理双引号。
DF %>% mutate(stimulus = gsub('\{""Q0"":""|""\}', '', stimulus))
我正在阅读几千个 csv 文件,其中一些列的格式非常 'interesting':{""Q0"":""double double quote""}
看起来 read.csv
读起来不错,但是 read_csv
和 fread
都在做不同的事情(见下文)。我的期望是:{"Q0":"double double quote"}
这是一个错误还是我做错了什么?
# Content of csv file
# "numbers", "simple_quote", "double_quote"
# "9", "quoted text", "{""Q0"":""double double quote""}"
library(readr)
library(data.table)
read.csv("test.csv")
#> numbers simple_quote double_quote
#> 1 9 quoted text {"Q0":"double double quote"}
read_csv("test.csv")
#> # A tibble: 1 x 3
#> numbers simple_quote double_quote
#> <dbl> <chr> <chr>
#> 1 9 quoted text "{\"Q0\":\"double double quote\"}"
fread("test.csv")
#> numbers simple_quote double_quote
#> 1: 9 quoted text {""Q0"":""double double quote""}
由 reprex package (v2.0.0)
于 2021-04-09 创建只是为了将@MrFlick 和@r2evans 的评论合并到一个回复中,并按照@jens-piegsa 的建议包括我的最终解决方法。
这似乎是一个错误,至少在 data.table 前面:
- https://github.com/Rdatatable/data.table/issues/1109
- https://github.com/Rdatatable/data.table/issues/4779
在我的用例中,data.table 的速度优势很大,所以我添加了一个 gsub() 步骤来处理双引号。
DF %>% mutate(stimulus = gsub('\{""Q0"":""|""\}', '', stimulus))