2017-05-03 103 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 

它:)