(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

애 \이것을 두개 사용했냐면 \역시 메타문자 성격에서 벗어나야 하기 떄문이다.


댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬