2017-05-03 101 views
2

我已经在我的csv文件中逃过引号,我试图将gsub取出来,以便可以用fread读入这些文件。以下是需要被固定在数据线中的一个的示例:如何gsub逃脱引号

[1] "\"549300UIFHFOUTLOYP82\",\"\"Maritime Centre, United Kingdom\"\",\"\",\"N\"" 

我使用的代码是:

data <- readLines(file) 
data <- gsub('([^,])"([^,])', '', data) 

这得到以下结果:

[1] "\"549300UIFHFOUTLOYP82\",aritime Centre, United Kingdo,\"\",\"N\"" 

我所寻找的是:

[1] "\"549300UIFHFOUTLOYP82\",\"Maritime Centre, United Kingdom\",\"\",\"N\"" 

关于此代码中出错的任何想法?

+0

这包是FREAD?请求,因为read.table及其类似行为将忽略在'quote'下指定的字符(在您的示例中将导致“英国海事中心”被视为两个变量)。唉,没关系,它是'data.table :: fread' –

+0

fread是从data.table v1.9.7。 9月必须是\“,\” – user5316628

+0

我明白了。但'data.table :: fread'也会忽略你的引用,即将“英国海事中心”看作两个变量。 –

回答

0

取代各地值双转义引号,而不是空值:

yourString <- string <- "\"549300UIFHFOUTLOYP82\",\"\"Maritime Centre, United Kingdom\"\",\"\",\"N\"" 
newString <- gsub("(\"\")(.+?)(\"\")","\"\\2\"", yourString, fixed=FALSE) 

这是否读“海事中心,英国”是否正确?

textCon <- textConnection(newString) 
d <- read.csv(textCon) 
str(d) 

#'data.frame': 0 obs. of 4 variables: 
#$ X549300UIFHFOUTLOYP82   : logi 
#$ Maritime.Centre..United.Kingdom: logi 
#$ X        : logi 
#$ N        : logi 

它:)