2012-08-02 10 views
17

문자열에서 밑줄 앞에있는 하위 문자열을 제거하는 데 어려움을 겪고 있습니다. "나는 또한"^ * "또는 같은 물건을 시도gsub을 사용하여 문자열에서 패턴을 제거하십시오.

> a 
[1] 5 7 

: 같아야합니다

a <- c("foo_5", "bar_7") 

a <- gsub("*_", "", a, perl = TRUE) 

결과를 : 나는 변화 할 수있다 밑줄 전에 비트 같은 * (와일드 카드)를 사용하려면 ? "하지만 실제로 작동하지 않았습니다.

답변

34

다음 코드는 귀하의 예제에서 작동 :

gsub(".*_", "", a) 
+0

큰 감사를. '.' 약자? 별표 '*'(와일드 카드)가 자체적으로 작동하지 않는 이유는 무엇입니까? 이해가 안되니? – user969113

+4

'.' 는 임의의 문자를 나타내므로 ". *"는 임의의 문자를 나타냅니다. '? regex'라고 입력하면 더 많은 설명을 찾을 수 있습니다. – Pop

+1

아 아아! 나는 *의 의미를 포함한다고 생각했다. 이미! 글쎄, 이제는 더 잘 알아. 다시 한 번 감사드립니다! – user969113

4

를 다른 방법도 시도 할 수 있습니다 :

gsub("\\S+_", "", a) 
-4
as.numeric(gsub(pattern=".*_", replacement = '', a) 
[1] 5 7 
+2

더 나은 이해를 위해 코드 외에도 항상 답변에 설명을 추가하십시오. – bigbounty

관련 문제