在 R 变量中转义单引号

Posted

技术标签:

【中文标题】在 R 变量中转义单引号【英文标题】:Escape single quote in R variables 【发布时间】:2014-03-10 05:09:16 【问题描述】:

我有一张表,其中有一列中的名称。我有一个 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

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

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

【问题讨论】:

minimal reproducible example 会有所帮助。 我在您的代码中没有看到 m[1,] &lt;- c(pos, name, salary, fppg)。我确实看到了m[1,] &lt;- c(job, name, age, sex)。这让我们认为这个错误不是来自这段代码。 错误来自此代码,我更改变量名以保护无辜,但忘记编辑错误。 jobnameagesex 是单个值吗? 是的。每个中只有一个值。 【参考方案1】:

我在第 11 行用双引号替换了单引号,我不需要在这个数据集中这样做。因此,不是名称中的单引号造成混乱,而是将单引号替换为双引号。

删除了这一行:

initdata <- gsub("'", '"', initdata)

【讨论】:

以上是关于在 R 变量中转义单引号的主要内容,如果未能解决你的问题,请参考以下文章

如何在单引号字符串中转义单引号

如何在 MySQL 中转义单引号

在 SQL Server 中转义单引号

如何在 Presto 中转义单引号?

在 Javascript 中转义单引号

如何在 JavaScript 中转义单引号 ( ' )? [复制]