0

我有一张表,其中有一列中的名称。我有一个 R 脚本来读取此表,然后将 write.table 写入 CSV 文件以进行进一步处理。如果脚本在写我的表时遇到带有撇号(单引号)字符的名称,例如矩阵中的“O'Reilly”

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

在遇到 O'Reilly 之前,我得到了一个包含所有员工数据的 csv 文件。我的谷歌搜索显示人们试图在字符串中添加引号或解析已经包含转义字符的字符串。

有没有办法在我的数据中转义或删除单引号?

4

1 回答 1

2

我在第 11 行用双引号替换了单引号,我不需要在这个数据集中这样做。所以不是名字中的单引号搞砸了,而是用双引号代替了单引号。

删除了这一行:

initdata <- gsub("'", '"', initdata)
于 2014-03-10T16:24:00.497 回答