我有一个角色,“变种”。
vars=c("cogD", "relevel(cbsnivcat3f, \"Lower\")", "relevel(leidingf, \"geen\")",
"relevel(ocdisf, \"Law\")")
我想只得到“(
”和“,
”之间的单词,以及括号和逗号之间的单词,例如relevel(cbsnivcat3f, \"Lower\")
{ {1}}
我的目标是:"cbsnivcat3f"
答案 0 :(得分:2)
尝试使用正则表达式:
gsub("relevel\\((.*?), .*", "\\1", vars)
[1] "cogD" "cbsnivcat3f" "leidingf" "ocdisf"
答案 1 :(得分:0)
我维护的rm_between
中的qdapRegex
函数允许您获取左右边界之间的子字符串。这对于这种情况很有效。在最后一步中,我们用原始值替换任何NA
。
library(qdapRegex)
out <- unlist(rm_between(vars, "(", ",", extract=TRUE))
out[is.na(out)] <- vars[is.na(out)]
out
## [1] "cogD" "cbsnivcat3f" "leidingf" "ocdisf"
幕后的常规表达方式是:"(().*?(,)"
,也可以与base, stringi 或 stringr 方法一起使用。