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
벡터가 있다고 가정하자:
<- c("The R Foundation",
Rstring "for Statistical Computing",
"R is FREE software",
"R is a collaborative project")
패턴 "R"
을 새로운 패턴 "RR"
로 바꾸는 것이 우리의 목표라고 상상해자.
sub()
함수를 사용하면 다음과 같다:
# string
<- c("The R Foundation",
Rstring "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()
를 사용해야 한다(종합적 대체).
마지막 예제와 동일한 벡터 Rstring
과 pattern
을 사용하여, gsub()
함수를 적용하면 다음과 같다:
# string
<- c("The R Foundation",
Rstring "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()
함수가FREE
를FRREE
로 변경하였다.