2014-12-08 3 views
0

문자 "vars"가 있습니다.문자에서 스트립 단어를 제거하십시오.

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

나는 relevel(cbsnivcat3f, \"Lower\")"cbsnivcat3f"

내 목표는의 "("와 예 브래킷과 쉼표 사이의 단어를 너무하고 위로 ","사이에있는 단어를 얻으려면 : vars= c("cogD","cbsnivcat3f","leidingf”,"ocdisf")

+0

어떻게 vars를 얻었습니까? 이전 단계를 수정해야합니까? – zx8754

답변

2

정규 표현식보십시오 :

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

감사합니다. @ 앤드리. "\ 1"부분을 설명해 주시겠습니까? 감사합니다 – Adam

+0

이 [link] (http://www.endmemo.com/program/R/gsub.php)에는 \\ 1이 무엇인지 알고 싶어하는 사람들에게 편리한 구문 예제와보기 예제가 포함되어 있습니다. – Adam

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" 

배후 정규 expressiob은 다음과 같습니다 또한베이스와 함께 사용할 수 있습니다 "(().*?(,)", stringi 또는 stringr 방법.

+0

감사합니다 @ 타일러 링커. R3.0.2에서 실행되는 qdapRegex에 대한 업데이트가 있습니까? "qdapRegex '를 사용할 수 없습니다 (R 버전 3.0.2의 경우)" – Adam

+0

:'install.packages ("qdapRegex", type = "source")를 사용하면 여전히 설치 될 것입니다. 그렇지 않으면 zip/tar.ball을 다운로드하고 소스에서 그런 식으로 설치하십시오. –

+0

Tanker @Tyler Rinker, 나는 그것을 줄 것이다. – Adam

관련 문제