R과 Python의 가장 큰 차이가 나는 것이, 문자열 인덱싱과 슬라이싱 일 것이다. 즉,
인덱싱은 문자에도 각 순번이 있어, 순번대로 가져오는 것이다. 그런데 R 과 파이썬 둘의 차이가 매우 크다, 어떻게 보면, 문자열을 초기에 핸들링 하기에는 Python이 더욱 쉬워 보인다.
아래의 주어진 문자의 예를 들어 설명해 보자.
text = "나는 고요한 아침의 나라 대한민국에서 살고 있습니다."
문자열 인덱싱
#Python
>>> text [0]
'나'
>>> text [0] + text[1]
'나는'
어찌 되었든 Python은 문자열이 서로 더하기가 된다. 정말로 직관적으로 연산 할 수 있어서 매우 좋다. 여기에서 파이썬을 주의해야 할 내용이 있다면, 문자의 인덱스의 숫자가 0으로 시작 되는 것이다.
# R
> library(stringr)
> substr(text, 1,1)
'나'
> paste0(substr(text,1), substr(text,2))
'나는'
R에서는 인덱싱이라는 개념이 거의 없다. 초기에 진입 할 때는 어려운 방법에 의해서, 진입 하게 된다.
R에서 만약에 이렇게 했다가는 이러한 에러가 난다.
> substr(text,1,1) + substr(text, 2,2)
Error in substr(text, 1, 1) + substr(text, 2, 2): 이항연산자에 수치가 아닌 인수입니다
Traceback:
R에서는 문자열을 더할 수 없기 때문이다.
문자열 슬라이싱
# Python
>>> text[0:6]
'나는 교요한'
Python에서는 배열의 범위만 지정하면 간단하게 슬라이싱 된다.
# R
>substr(text, 1,6)
'나는 교요한'
R에서도 substr 함수하고 범위만 지정 하면 간단하게 처리 할 수 있다.
나는 R을 처음 진입 하였을때, 날짜 처리에 어려움이 있었다. 아래의 날짜를 년월로 집계하여 넣는 것이 였는데, R에서는 구글링 해서도 못 찾아서, 2021년 01월이면 202101 로 하였어야 했는데, 20211로 하였다.
지금은 해결 방법을 찾았지만 처음 실무에서 구현 하였을 때는 어려움이 있었다.
date = "2011-01-01"
#R
> a = substr(date,1,4)
> b = substr(date, 6,7)
> paste0(a, b)
'201101'
파이썬은 이것보다는 매우 간단 하다.
# Python
>>> a = date[0:4]
>>> b = date[5:7]
>>> a + b
'201101'
하지만 인덱스 범위를 지정 하는 것은 파이썬이 조금 헤깔린다.
댓글 없음:
댓글 쓰기