我有一个名为一列的表。我有一个R脚本来读取此表,然后对CSV文件执行write.table以进行进一步处理。如果脚本遇到带有撇号(单引号)字符的名称(例如矩阵中的“O'Reilly”),那么脚本会在写表时barf
library(RCurl)
library(RJSONIO)
dir <- "C:/Users/rob/Data"
setwd(dir)
filename <- "employees.csv"
url <- "https://obscured/employees.html"
html <- getURL(url, ssl.verifypeer = FALSE)
initdata <- gsub("^.*?emp.allEployeeData = (.*?);.*", "\\1", html)
initdata <- gsub("'", '"', initdata)
data <- fromJSON( initdata )
table <- list()
for(i in seq_along(data))
{
job <- data[[i]][[1]]
name <- data[[i]][[2]]
age <- data[[i]][[6]]
sex <- data[[i]][[7]]
m <- matrix(nrow = 1, ncol = 4)
colnames(m) <- c("job", "name", "age", "sex")
m[1, ] <- c(job, name, age, sex)
table[[i]] <- as.data.frame(m)
write.table(table[[i]],file = filename,append = TRUE,sep = ",",col.names = FALSE,row.names = FALSE)
}
当我遇到O'Reilly时,我收到的错误是:
Error in m[1, ] <- c(job, name, age, sex) :
number of items to replace is not a multiple of replacement length
我最终得到一个csv文件,其中包含在遇到O'Reilly之前所有员工的数据。我的谷歌搜索显示人们试图在字符串中添加引号或解析已包含转义字符的字符串。
有没有办法逃避或删除我的数据中的单引号?
答案 0 :(得分:2)
我在第11行用双引号替换单引号,我不需要在这个数据集中做。因此,这不是一个名称搞乱的单引号,而是用双重搞乱的东西取代单引号。
删除了这一行:
initdata <- gsub("'", '"', initdata)