R에서 Python을 실행하는 방법

내가 R을 좋아하는만큼 Python이 데이터 과학과 범용 컴퓨팅 모두에서 훌륭한 언어라는 것은 분명합니다. 그리고 R 사용자가 Python에서 몇 가지 작업을 수행하려는 데에는 충분한 이유가있을 수 있습니다. 아마도 R에 상응하는 (아직)없는 훌륭한 라이브러리 일 것입니다. 또는 R이 아닌 Python에 샘플 코드가있는 액세스하려는 API.

R reticulate 패키지 덕분에 R 스크립트 내에서 바로 Python 코드를 실행하고 Python과 R간에 데이터를주고받을 수 있습니다.

reticulate 외에도 시스템에 Python이 설치되어 있어야합니다. 또한 Python 코드가 의존하는 모든 Python 모듈, 패키지 및 파일이 필요합니다.

당신이 함께 따라하려는 경우, 설치와 부하 그물  install.packages("reticulate")library(reticulate).

단순하게 유지하기 위해 기본 과학 컴퓨팅을위한 NumPy 패키지를 가져오고 4 개의 숫자 배열을 만드는 두 줄의 Python 코드로 시작하겠습니다. Python 코드는 다음과 같습니다.

numpy를 np로 가져 오기

my_python_array = np.array ([2,4,6,8])

R 스크립트에서 바로이 작업을 수행하는 한 가지 방법이 있습니다.

py_run_string ( "numpy를 np로 가져 오기")

py_run_string ( "my_python_array = np.array ([2,4,6,8])")

py_run_string()함수는 괄호와 따옴표 안에있는 모든 Python 코드를 실행합니다. 

R에서 해당 코드를 실행하면 아무 일도 일어나지 않은 것처럼 보일 수 있습니다. RStudio 환경 창에 아무것도 표시되지 않으며 값도 반환되지 않습니다. print(my_python_array)R에서 실행 하면 my_python_array존재하지 않는 오류가 발생 합니다.

그러나 다음 과 같은 함수   내에서 Python 인쇄 명령 을 실행하면 py_run_string()

py_run_string ( "my_python_array의 항목 : print (item)")

결과가 표시되어야합니다. 

하지만 코드가 두 줄 이상인 경우 Python 코드를 이와 같이 한 줄씩 실행하는 것은 성가신 일입니다. 따라서 R에서 Python을 실행하고 reticulate하는 몇 가지 다른 방법이 있습니다.

하나는 모든 Python 코드를 일반 .py 파일에 넣고 py_run_file()함수를 사용하는 것입니다. 내가 좋아하는 또 다른 방법은 R Markdown 문서를 사용하는 것입니다. 

R Markdown을 사용하면 텍스트, 코드, 코드 결과 및 시각화를 단일 문서에 결합 할 수 있습니다. 파일> 새 파일> R Markdown을 선택하여 RStudio에서 새 R Markdown 문서를 만들 수 있습니다.

코드 청크는 3 개의 백틱 ( ```)으로 시작하고 3 개의 백틱으로 끝납니다. RStudio에서는 기본적으로 회색 배경이 있습니다.

이 첫 번째 청크는 R 코드 용 r입니다. 여는 대괄호 뒤에있는 것을 볼 수 있습니다 . reticulate 패키지를로드 한 다음 사용할 Python 버전을 지정합니다. (지정하지 않으면 시스템 기본값이 사용됩니다.)

```{r setup, include=FALSE, echo=TRUE}

library(reticulate)

use_python("/usr/bin/python")

```

아래의 두 번째 청크는 Python 코드 용입니다. Python 파일에서와 같이 Python을 입력 할 수 있습니다. 아래 코드는 NumPy를 가져오고 배열을 만들고 배열을 인쇄합니다.

```{파이썬}

numpy를 np로 가져 오기

my_python_array = np.array ([2,4,6,8])

my_python_array의 항목 :

print (항목)

```

여기 멋진 부분이 있습니다. R에서 해당 배열을 py$my_python_array(일반적으로 py$objectname) 로 참조하여 사용할 수 있습니다 .

다음 코드 청크에서는 Python 배열을라는 R 변수에 저장합니다 my_r_array. 그리고 그 배열의 클래스를 확인합니다.

```{r}

my_r_array <-py $ my_python_array

클래스 (my_r_array)

``

이것은 이와 같은 R 객체에 대해 정확히 기대할 수없는 클래스 "배열"입니다. 하지만 as.vector(my_r_array)각 항목에 2를 곱하는 것과 같이 원하는 R 연산 을 사용하여 일반 벡터로 변환 하고 실행할 수 있습니다. 

```{r}

my_r_vector <-as.vector (py $ my_python_array)

클래스 (my_r_vector)

my_r_vector <-my_r_vector * 2

```

다음 멋진 부분 : I는 파이썬에서 그 R 변수 등을 사용할 수 있습니다 r.my_r_array(더 일반적으로 r.variablename같은) 

```{파이썬}

my_python_array2 = r.my_r_vector

print (my_python_array2)

```

시스템에 Python을 설정하지 않고 이것이 어떻게 생겼는지보고 싶다면이 스토리의 맨 위에있는 비디오를 확인하십시오.