(R) 11장. 문자열 처리
1. grep()
grep(pattern,x)는 문자열 벡터 x에서 특정 부분 문자열 pattern을 찾기 위해 호출한다.
첫 번째의 경우"Pole" 문자열은 두 번쨰 인수의 2번째와 3번쨰 원소에서 나타난다.
두 번쨰의 경우 아무데도 없어서 빈 벡터가 반환된다.
2. nchar()
nchar(x)는 x의 길이를 알려준다.
>nchar("South Pole")
[1] 10
3. paste()
여러 문자열을 하나의 긴 문자열로 합쳐준다.
>paste("North","Pole")
[1] "North Pole"
>paste("North","Pole",sep=".")
[1] North.Pole
예제에서 선택 인수 sep는 문자열 사이에 기본으로 사용되는 띄어쓰기 대신 다른 문자를 넣고 싶을 때 사용한다.
4. sprint()
주어진 형식에 맞춰서 문자열을 조합한다.
>i<-8
>s<-sprintf("the square of %d is %d,i,i^2)
[1] "the square of 8 is 64"
5. substr()
substr(x, start, stop)은 주어진 문자열 x에서 start부터 stop까지의 범위에 위치한 부분 문자열을 출력한다.
>substring("Equator",3,5)
[1] uat
6. strsplit()
strsplit(x, split)은 x에서 문자열 split을 기준으로 나눠 부분 문자열의 리스트를 만든다.
>strsplit("6-16-2011",split="-")
[[1]]
[1] "6" "16" "2011"
7. regexpr()
regexpr(pattern,text)는 text내에서 pattern이 가장먼저 나타는 위치를 찾아준다
>regexpr("uat","Equator")
[1] 3
uat는 Equator의 3번째 문자부터 시작해 나타난다는 것을 알려준다.
8. gregexpr()
gregexpr(pattern,text)는 regexpr()과 같지만, 이 함수는 패턴이 나타나는 모든 부분을 찾는다.
>gregexpr("iss","Mississippi")
[[1]]
[1] 2 5
2. 정규표현식
정규표현식은 와일드 카드의 일종이다. 문자열 관련 다양한 클래스를 축약해 정의한 것이다. 예를들어, "[au]"는 a나 u문자 중 하나라도 포함한 문자열을 뜻한다.
>grep("[au]",c("Equator","North Pole","South Pole"))
[1] 1 3
마침표(.)는 단일 문자를 나타낸다.
>grep("o.e",c("Equator","North Pole","South Pole"))
[1] 2 3
---> 여기서는 o이후에 문자 하나가 오고 뒤에 e가 나오는 3개의 문자로 된 문자열을 찾는다.
>grep("N..t",c("Equator","North Pole","South Pole"))
[1] 2
마침표는 문자 그대로 사용되지 않는 문자인 메타문자의 한예이다.
예를들어 마침표가 grep()의 첫 번째 인수에서 사용된다면, 이는 실제마침표로 쓰이지 않고 모든 문자를 대표하는 뜻으로 사용된다.
>grep(".",c("abc","de","f.g"))
[1] 1 2 3
마침표는 메타문자이므로 3이나오는것이 아니라 1 2 3 이 다 나왔다.
이런 경우 '\'를 사용해 마침표의 메타문자 성격에서 '벗어나야' 한다.
>grep("\\.",c("abc","de","f.g"))
[1] 3
애 \이것을 두개 사용했냐면 \역시 메타문자 성격에서 벗어나야 하기 떄문이다.
댓글
댓글 쓰기