R마크다운으로 파이썬 객체지향 프로그래밍 내용을 정리할 예정이라 reticulate
팩키지를 설치하고, anaconda3
도 설치한다. 아나콘다 내부에 파이썬이 들어있어 Anaconda 2018.12 for Windows Installer 웹사이트에서 다운로드 받아 설치한다.
아나콘다를 설치한 경우 환경설정도 함께 진행한다. 제어판
→ 시스템 및 보안
→ 시스템
으로 이동해서 “고급 시스템 설정”으로 들어가서 환경변수(N)…로 들어간다. 환경변수에 다음 사항을 추가시킨다. 단, 사용자명
에 본인 컴퓨터 사용자 계정을 지정한다.
C:\Users\사용자명\Anaconda3\Library\bin
C:\Users\사용자명\Anaconda3
C:\Users\사용자명\Anaconda3\Scripts
맥OS를 포함한 유닉스 계열 which python
명령어, 윈도우는 where python
명령어를 실행시키게 되면 불러다 사용할 python
프로그램을 확인할 수 있다.
/usr/bin/python
echo $HOME
명령어를 사용해서 사용자 홈 위치를 파악한다. 이것을 파악해야 하는 이유는 anaconda3
설치경로를 확정지어야 하기 때문이다.
/Users/statkclee
이제 anaconda3
에 설치된 프로그램을 모두 이용하려면 다음과 같이 .bash_profile
에 경로명을 추가하여 쉘에서 참조하여 사용할 수 있도록 준비한다.
pip
와 더불어 대표적인 팩키지 관리자인 conda
도 확인한다.
R 코드 덩어리(chunk)에 “{python}" 으로 시작해서 파이썬 코드를 작성하고 "
”으로 마무리하여 파이썬 코드를 작성한다. 간단한 for
루프를 작서하여 리스트에 담긴 원소를 하나씩 출력하는 파이썬 코드를 작성한다.
헬로 파이썬!!!
languages = ['R', '파이썬', 'C/C++', '자바', '루비']
for language in languages:
print("프로그래밍 언어:", language)
프로그래밍 언어: R
프로그래밍 언어: 파이썬
프로그래밍 언어: C/C++
프로그래밍 언어: 자바
프로그래밍 언어: 루비
reticulate::repl_python()
명령어를 R 콘솔에서 타이핑하게 되면 >
프롬프트가 >>>
으로 변경되어 파이썬 코드를 컨트롤+엔터(CTRL+Enter)키를 입력하게 되면 RStudio IDE에서 파이썬 코드 개발작업을 수행할 수 있다.
비만 기준 ’골드 스탠더드(gold standard)’로 체질량지수(BMI, Body Mass Index)를 많이 사용한다. 체중을 신장의 제곱으로 나눈값으로 BMI를 계산한다.
\[\text{체질량 지수} = \frac{체중}{신장^2}\]
대한민국 남성 평균키와 평균체중은 얼마나 될까 이를 파이썬 프로그램으로 작성하여 계산해 보자. 2015년 8월 뉴스원 기사에 따르면 170.5cm, 70.9㎏가 2013년 기준 평균이다. 약 24 정도 나온다. 아래 BMI 참조표를 보면 표준체형에서 비만으로 넘어가기 직전 모습이 된다.
이를 바탕으로 BMI를 R로 먼저 계산해보자
대한민국 남성 BMI (2013년): 24.3892
reticulate
팩키지 source_python()
함수를 사용해서 BMI를 계산하는 파이썬 코드를 실행시킬 수 있다.
bmi.py
파일에 BMI를 계산하는 파이썬 코드를 작성한다.
## bmi.py
# BMI 계산
height = 170.5 * 0.01
weight = 70.9
bmi = weight / height ** 2
print("BMI:", bmi)
두번째는 calc_bmi()
함수를 작성하여 신장과 몸무게를 넣어 BMI를 계산하도록 파이썬 코드를 수정한다.
## bmi_function.py
# BMI 계산
def calc_bmi(height = 170.5, weight=70.9):
height = height * 0.01
weight = weight
bmi = weight / height ** 2
print("BMI:", bmi)
# calc_bmi(height = 170.5, weight=70.9)
동일한 방식으로 source_python()
실행을 하지만 calc_bmi()
함수를 R 환경에서 불러 작업할 수 있는 장점이 있다.
[Pablo Franco, @jpablofranco(15 June, 2018), "Mix’n Mingling R and Python with Reticulate"](https://rpubs.com/jpfranco123/reticulate)↩︎