11.2 패턴 대체 함수

때때로 주어진 문자열 벡터에서 패턴을 찾는 것이 우리가 원하는 전부이다.

그러나 한 패턴을 다른 패턴으로 대체하는 것에 관심이 있을 수도 있다.

이를 위해 대체 함수 sub() 함수와 gsub() 함수를 사용할 수 있다.

sub() 함수와 gsub() 함수의 차이점은 전자가 패턴의 첫 번째 항목 만 대체하고 후자는 모든 일치 항목을 대체한다는 것이다.

대체 함수에는 일치하는 정규 표현식 pattern, 일치하는 패턴의 replacement 및 일치하는 text세 가지 주요 인수가 필요하다.

기본 사용법은 다음과 같다:

`sub(pattern, replacement, text)` : 주어진 `text`에서 처음 나타나는 `pattern`을 `replacement`로 대체한다.
`gsub(pattern, replacement, text)` :

11.2.1 sub() 함수를 이용한 첫 번째 일치의 대체

sub() 함수는 주어진 text에서 처음 나타나는 패턴을 대체한다.

즉, 문자열 벡터의 각 요소에 패턴이 여러 번 나타나면 첫 번째 패턴만 바꾸는 것이다.

예를 들어 다음과 같이 다양한 문자열을 포함하는 text 벡터가 있다고 가정하자:

Rstring <- c("The R Foundation",
             "for Statistical Computing",
             "R is FREE software",
             "R is a collaborative project")

패턴 "R"을 새로운 패턴 "RR"로 바꾸는 것이 우리의 목표라고 상상해자.

sub() 함수를 사용하면 다음과 같다:

# string
Rstring <- c("The R Foundation",
             "for Statistical Computing",
             "R is FREE software",
             "R is a collaborative project")

# substitute 'R' with 'RR'
sub("R", "RR", Rstring)
## [1] "The RR Foundation"             "for Statistical Computing"    
## [3] "RR is FREE software"           "RR is a collaborative project"
  • 결과에서 문자 “R”의 첫 번째 항목만 text 벡터의 각 요소에서 바뀐다.
  • 세 번째 요소에 있는 FREE라는 단어에도 “R”이 포함되어 있지만 대체되지 않았다. 이것은 첫 번째 패턴이 아니기 때문이다.

11.2.2 gsub() 함수를 이용한 모든 일치 대체

첫 번째 발생한 패턴만이 아니라 모든 일치하는 패턴을 대체하려면 gsub()를 사용해야 한다(종합적 대체).

마지막 예제와 동일한 벡터 Rstringpattern을 사용하여, gsub() 함수를 적용하면 다음과 같다:

# string
Rstring <- c("The R Foundation",
             "for Statistical Computing",
             "R is FREE software",
             "R is a collaborative project")

# substitute
gsub("R", "RR", Rstring)
## [1] "The RR Foundation"             "for Statistical Computing"    
## [3] "RR is FRREE software"          "RR is a collaborative project"
  • Rstring의 세 번째 요소를 제외하고 sub()와 거의 동일하다.
  • FREE 단어에서 R의 발생이 고려되어, gsub() 함수가 FREEFRREE로 변경하였다.