728x90
텍스트 처리에서 유용하게 사용되는 패턴 추출에 관한 함수들에 대해 알아보도록 하겠습니다. 먼저 우리가 풀어야 할 문제에 대해 알아보도록 하겠습니다.
> fls[1]
[1] "dws_1/sub_1.csv"
fls[1]에는 다음과 같은 문자가 들어있습니다. 여기서 앞에 숫자1은 실험의 횟수를 의미하고, 뒤에 숫자1은 유저의 고유한 번호를 의미합니다.
해당 문자열에서 숫자를 추출하여 따로 저장하는 것이 목표입니다.
gregexpr
: 함수의 지정되어 있는 표현을 텍스트 전체에서 찾아줍니다.
gregexpr 사용법은 다음과 같습니다. gregexpr("패턴", 해당 문자열) 앞의 목표에서 우리는 먼저, 숫자를 출력하는 것이 목표입니다. 그렇기 위해서 정규표현식을 사용해서 숫자 패턴을 정의하도록 하겠습니다.
먼저 , 숫자에 관한 정규표현식은 [[:digit:]]+ 입니다. 뒤에 +는 적어도 1번 매칭을 하겠다는 뜻입니다. 정규 표현식에 관한 내용은 다음 글에 잘 정리되어 있습니다.
gregexpr("[[:digit:]]+", fls[1])
gregexpr는 다음과 같이 패턴이 위치한 인덱스를 반환하여 줍니다. 이제 우리가 원하는 숫자가 들어있는 인덱스의 값을 알았으니, 그 인덱스에 해당하는 값을 가져오면 성공입니다!!
regmatches
: 인덱스에 해당하는 값을 가져와 줍니다.
regmatches는 위에서 gregexpr를 사용해서 얻은 인덱스의 값을 넣어줌으로써 실제 데이터에 값을 가져오게 됩니다.
regmatches(fls[1],gregexpr("[[:digit:]]+", fls[1])[1])
다음과 같이 우리가 출력하고 싶은 내용을 잘 출력하였습니다.
'R' 카테고리의 다른 글
[R] ggplot2: facet_wrap(집단별로 분할하여 시각화 하기) (0) | 2021.09.01 |
---|---|
[R] with 함수 (0) | 2021.04.19 |
[R] assign(객체 생성), get(변수 불러오기) (0) | 2021.04.12 |
[R] stringr 패키지 함수 (0) | 2021.03.08 |
[R] paste() 와 file.path() 비교 (0) | 2021.03.06 |