我想从此字符串中提取引用的名称(deparse()
调用的结果。)
tstStr <- "!is.na(neb[[\"ba\"]]) & neb[[\"ba\"]] >= targ[[\"ba\"]] & neb[[\"ht\"]] >= 0"
因此,结果将是c("ba","ba","ba","ht")
。我已尝试使用gsub
和grep
进行各种操作,但无法获得我想要的内容。
答案 0 :(得分:5)
以下是我使用的内容:
m <- gregexpr(pattern = '".*?"', tstStr)
gsub('"', '', regmatches(tstStr, m)[[1]])
# [1] "ba" "ba" "ba" "ht"
答案 1 :(得分:1)
或者
library(stringr)
str_extract_all(tstStr, perl('(?<=")[A-Za-z]+'))[[1]]
#[1] "ba" "ba" "ba" "ht"
答案 2 :(得分:0)
qdapRegex
函数rm_between
可以在此处运行。 rm_between
提取或删除左右边界之间的内容:
tstStr <- "!is.na(neb[[\"ba\"]]) & neb[[\"ba\"]] >= targ[[\"ba\"]] & neb[[\"ht\"]] >= 0"
library(qdapRegex)
rm_between(tstStr, left='[["', right='"]]', extract=TRUE)
## [[1]]
## [1] "ba" "ba" "ba" "ht"