R 从字符中去掉单词

R 从字符中去掉单词,r,character,gsub,R,Character,Gsub,我有一个角色,“vars” vars=c("cogD", "relevel(cbsnivcat3f, \"Lower\")", "relevel(leidingf, \"geen\")", "relevel(ocdisf, \"Law\")") 我只想得到“(”和“,”之间的单词,以及括号和逗号之间的单词,例如,relevel(cbsnivcat3f,\“Lower\”)仅“cbsnivcat3f” 我的目标是:vars=c(“cogD”、“cbsnivcat3f”、“leidingf”、“

我有一个角色,“vars”

vars=c("cogD", "relevel(cbsnivcat3f, \"Lower\")", "relevel(leidingf, \"geen\")", 
"relevel(ocdisf, \"Law\")")
我只想得到“
”和“
”之间的单词,以及括号和逗号之间的单词,例如,
relevel(cbsnivcat3f,\“Lower\”)
“cbsnivcat3f”


我的目标是:
vars=c(“cogD”、“cbsnivcat3f”、“leidingf”、“ocdisf”)
尝试一个正则表达式:

gsub("relevel\\((.*?), .*", "\\1", vars)
[1] "cogD"        "cbsnivcat3f" "leidingf"    "ocdisf"   

我维护的
qdapRegex
中的
rm_between
函数允许您在左边界和右边界之间获取子字符串。对于这种情况,这将非常有效。在上一步中,我们用原始值替换任何
NA
s

library(qdapRegex)
out <- unlist(rm_between(vars, "(", ",", extract=TRUE))
out[is.na(out)] <- vars[is.na(out)]
out

## [1] "cogD"        "cbsnivcat3f" "leidingf"    "ocdisf" 
库(qdapRegex)

您是如何获得
vars
,也许您应该修复上一步的?非常感谢@Andrie。请您解释一下“\\1”部分。谢谢。我发现它包含语法概述和视图示例,方便那些想知道\\1是什么的人。谢谢@Tyler Rinker。运行在R3.0.2上的qdapRegex有更新吗?”qdapRegex’不可用(适用于R版本3.0.2)“我认为如果您使用:
install.packages(“qdapRegex”,type=“source”)
它仍然会安装。如果不下载zip/tar.ball并从源代码处安装。Tank you@Tyler Rinker,我会尝试一下。