str_replace (package stringr)는 rackets를 r에서 대체 할 수 없습니다.

StackOverflow https://stackoverflow.com//questions/23065378

  •  26-12-2019
  •  | 
  •  

문제

문자열이 있습니다.

 fruit <- "()goodapple"
.

문자열에서 브래킷을 제거하고 싶습니다.일반적으로 이러한 종류의 문제를 처리 할 수 있기 때문에 Stringr 패키지를 사용하기로 결정합니다.나는 사용한다 :

str_replace(fruit,"()","")
.

아무 것도 대체되지 않으며 다음이 대체됩니다.

[1] "()good"
.

오른쪽 절반 브래킷을 교체하고 싶다면 작동합니다 :

str_replace(fruit,")","") 
[1] "(good"
.

그러나 왼쪽 절반 브래킷이 작동하지 않습니다 :

str_replace(fruit,"(","")
.

및 다음 오류가 표시됩니다.

Error in sub("(", "", "()good", fixed = FALSE, ignore.case = FALSE, perl = FALSE) : 
 invalid regular expression '(', reason 'Missing ')''
.

이런 이유에 대한 아이디어가 있습니까?문자열에서 "()"을 어떻게 제거 할 수 있습니까?

다른 팁

허용 된 답변은 정확한 문제에 대해 작동하지만 더 일반적인 문제는 아닙니다 :

my_fruits <- c("()goodapple", "(bad)apple", "(funnyapple")
str_replace(my_fruits,"\\(\\)","")
## "goodapple"  "(bad)apple", "(funnyapple"
.

정규식이 정확히 일치하기 때문입니다.

브래킷 쌍에 대해서만주의를 기울이면 더 강한 해결책입니다.

str_replace(my_fruits, "\\([^()]{0,}\\)", "")
## "goodapple"   "apple"       "(funnyapple"
.

MJH의 답변을 빌드하면 모든 (또는) 다음을 제거합니다.

my_fruits <- c("()goodapple", "(bad)apple", "(funnyapple")
str_replace_all(my_fruits, "[//(//)]", "")

[1] "goodapple"  "badapple"   "funnyapple"
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top