剥离一个字符的单词

时间:2014-12-08 09:54:25

标签: r character gsub

我有一个角色,“变种”。

vars=c("cogD", "relevel(cbsnivcat3f, \"Lower\")", "relevel(leidingf, \"geen\")", 
"relevel(ocdisf, \"Law\")")

我想只得到“(”和“,”之间的单词,以及括号和逗号之间的单词,例如relevel(cbsnivcat3f, \"Lower\") { {1}}

我的目标是:"cbsnivcat3f"

2 个答案:

答案 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 方法一起使用。