close_btn
조회 수 100682 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

grep는 문자열 vector에서 해당 패턴을 만족하는 index를 찾아주는 함수이고 regexpr 는 regular expression의 약자로서 해당 패턴을 만족하는지 여부 뿐만아니라 문자열 내부에서의 위치까지 알려줍니다.

#################################################

txt <- c("The", "licenseslicenses", "for", "most", "software", "are",
"designed", "to", "take", "away", "your", "freedom",
"to", "share", "and", "change", "it.")i <- grep("[gu]", txt)
i
txt[i]

regexpr("en", txt)
gregexpr("en", txt)

 

> txt <- c("The", "licenseslicenses", "for", "most", "software", "are",
+ "designed", "to", "take", "away", "your", "freedom",
+ "to", "share", "and", "change", "it.")
>
> i <- grep("[gu]", txt)
> i
[1] 7 11 16
> txt[i]
[1] "designed" "your" "change"

grep[("[gu]",txt) 에서 "[gu]"가 바로 regular expression 인데 이 대괄호 안의 알파벳은 g 또는 u를 포함하는 문자열 이라는 표현이다. 따라서 txt 문자열 vecor 중에 g 또는 u를 포함하는 위치를 알려달라 한 것이 grep[("[gu]",txt) 입니다.

 

> regexpr("en", txt)
[1] -1 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
attr(,"match.length")
[1] -1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
attr(,"useBytes")
[1] TRUE
> rp<-regexpr("en", txt)
> attr(rp,"match.length")
[1] -1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

이와달리  regexpr("en", txt) 는 vector의 길이만큼의 vector를 통해 각각의 index에 패턴이 존재하지 않으면 -1, 존재하면 어느 위치에 존재하는지를 알려줍니다. 또한 attribute를 통해 일치하는 패턴의 길이 또한 알려줍니다. 이는 attr 함수를 통하여 값을 얻어올 수 있습니다.

 

> gregexpr("en", txt)
[[1]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE[[2]]
[1] 4 12
attr(,"match.length")
[1] 2 2
attr(,"useBytes")
[1] TRUE

[[3]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[4]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[5]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[6]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[7]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[8]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[9]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[10]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[11]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[12]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[13]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[14]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[15]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[16]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

[[17]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE

regexpr()이 문자열 하나당 패턴을 한번만 찾아 위치를 알려주는 데에 비해 gregexpr()은 한 문자열에 해당 패턴이 2번 존재할 경우 존재 위치를 2개 모두 알려줍니다. 문자열 vector안에 포함된 각각의 문자열들에 특정패턴이 포함되는 횟수가 다를 수 있으므로 matrix형태로 표현되지 못하겠지요 ? 반환형식은 list입니다.

en 패턴을 두번 만족하는 "licenseslicenses" 위치의  gregexpr() 결과값을 가져오겠습니다.

[[2]]
[1] 4 12
attr(,"match.length")
[1] 2 2
attr(,"useBytes")
[1] TRUE

 

위처럼 4번째와 12번째에 en 패턴이 위치하는 것을 알 수있고 그 패턴의 길이는 en으로 두글자입니다. 이것이 match.length의 키를 가진 attribute로 자동저장 되어있습니다.

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 초급 R 강의 게시판 이용 관련 공지사항 1 DataMarket 2014.05.21 511912
50 초급 [BigData - R강의 초급] 정규표현식 regular expression 4강 (1) – Anchors "^", "$" 2 DataMarket2 2014.05.23 101682
49 초급 [BigData - R강의 초급] 정규표현식 regular expression 3강 – alternation "|" DataMarket2 2014.05.23 96708
48 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(4) – 게으른 수량자 "+?", "*?", "{n,}?" 1 DataMarket2 2014.05.23 110274
47 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(3) – 수량자 "?" 1 DataMarket2 2014.05.23 109653
46 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(2) – 수량자 {} 1 DataMarket2 2014.05.23 104349
45 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(1) – 수량자 “+”, “*” DataMarket2 2014.05.23 107124
44 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(4) – 문자열 형태표현 ".", "\W", "\D", "\S" DataMarket2 2014.05.23 94863
43 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(3) – 문자열 형태표현 "\p{Hangul}"(한글), 특수문자 2 DataMarket2 2014.05.23 102199
42 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(2) – 문자열 형태표현 “\d”, “\s” DataMarket2 2014.05.23 93638
41 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(1) – 문자열 형태표현 ".", "\w" 3 DataMarket2 2014.05.23 113697
40 초급 [BigData - R강의 초급] 따옴표를 문자열로 인식시키려면? - escaper \ DataMarket2 2014.05.23 69631
39 초급 [BigData - R강의 초급] 문자열 패턴 regular expression 연습 DataMarket2 2014.05.23 70278
» 초급 [BigData - R강의 초급] 문자열 검색 – grep, regexpr, gregexpr DataMarket2 2014.05.23 100682
37 초급 [BigData - R강의 초급] 문자열 찾아바꾸기 – sub, gsub 1 DataMarket2 2014.05.23 90892
36 초급 [BigData - R강의 초급] 문자열 나누기 – strsplit, str_split DataMarket2 2014.05.23 105944
35 초급 [BigData - R강의 초급] 문자열 일부 추출 – substr(), str_sub() 비교 2 DataMarket2 2014.05.23 102211
34 초급 [BigData - R강의 초급] 문자열 포멧 출력 – sprintf 함수 1 DataMarket2 2014.05.23 59764
33 초급 [BigData - R강의 초급] 문자열 길이 – nchar 함수 1 DataMarket2 2014.05.23 57837
32 초급 [BigData - R강의 초급] 문자열 이어붙이기 - paste, paste0 함수 1 DataMarket2 2014.05.23 69632
31 초급 [BigData - R강의 초급] 결측치 처리 함수 - complete.cases DataMarket2 2014.05.23 50920
Board Pagination ‹ Prev 1 2 ... 3 Next ›
/ 3

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5