2013-06-27 4 views
1

그래서 R에서 일부 문자열을 편집 중이므로 문자열에서 괄호 안에있는 모든 것을 삭제하고 싶습니다. 문제는 정규 표현식에 익숙하지 않고 gsub을 사용하여 괄호를 사용하고 싶을 때나 작동하지 않거나 올바른 결과를 얻지 못하는 것 같습니다.R에서 문자열 편집 - 괄호로 인한 문제

힌트가 있습니까? 나는 그 해결할 수있는 문제를 느낀다. gsub이 아닌 기능을 사용할 수 있습니까?

Ex. 문자열 : "abc def (foo) abc (def)"는 "abc def abc"로 제거되어야합니다.

이렇게하는 유일한 방법은 괄호 안에 whats를 지정하는 것이면 좋을 것입니다.

+1

당신이 당신의 질문에 가치를 추가 할 시도하는 예를 보자 – krlmlr

답변

3

그냥 다른 방법 :

x <- "abc def (foo) abc (def)" 
gsub(" *\\(.*?)", "", x) 

당신은 정규 표현식에 \(을 탈출해야합니다. R에서 두 번 탈출해야합니다 \\. 그리고 당신은 당신이 탈출하지 않아도 ) (다음 .*?로, 비 욕심 방식으로 ( 후 아무것도 (.*)를 검색합니다. qdap 패키지의 bracketX 기능이 설계되었다

+0

멋지게 우아한 솔루션입니다. – riders994

2

괄호는 대개 정규식과 R에서 사용하는 특수 문자로, 백 슬래시 \을 사용하여 이스케이프 처리해야합니다. 공백

gsub(" *\\([^)]*\\) *", " ", "abc def (foo) abc (def)") 

조심해,이 내 gsub 호출에 의해 제대로 처리되지 않습니다 문제는 백 슬래시는 다음 오히려 서투른 건설에 이르게하는, 두 번째 백 슬래시뿐만 아니라 R 문자열을 이스케이프 할 필요가 있다는 것입니다 .

+0

완벽하게 작동 – riders994

2

.이 문제에 대한!

library(qdap) 
x <- "abc def (foo) abc (def)" 
bracketX(x, "round") 

## > bracketX(x, "round") 
## [1] "abc def abc"