获取R-regex中某个模式后的字符



我有一个数据帧,其中有一列:

df <- data.frame(cat = c("c(\"BPT\", "BP")", "c("BP2", "BP")", "c("BPT", "BP")", "c("CN", "NC")"))
df$cat <- as.character(df$cat)
df$cat

如何提取出现在c(\",有时只有一个反斜杠,有时有2个。与字符类似,有时字符为2,有时为3。例如BP2、BP等

到目前为止,我已经尝试过:

substr(x = df$cat, start = 4, stop = 6)

但这导致:

 ""BP" "BP2"  "BPT"  "CN""

我只想输出显示

"BPT" "BP2"  "BPT"  "CN"

您可以使用

df <- data.frame(cat = c("c(\"BPT\", "BP")", "c("BP2", "BP")", "c("BPT", "BP")", "c("CN", "NC")"))
df$cat <- as.character(df$cat)
unlist(lapply(gsub('\', '', df$cat, fixed=TRUE), function(x) eval(parse(text=x))[[1]]))
## => [1] "BPT" "BP2" "BPT" "CN" 

在线观看R演示。

票据

  • gsub('\', '', df$cat, fixed=TRUE)删除所有反斜杠。如果只计划删除"之前的反斜杠,则可以使用gsub('\"', '"', df$cat, fixed=TRUE)
  • eval(parse(text=x))[[1]]解析矢量并返回第一项
  • lapply有助于遍历您所拥有的全部数据。请参见使用sapply和lapply

相关内容

  • 没有找到相关文章

最新更新