如何在R中运行Python


如何在R中运行Python

尽管我很喜欢R,但很明显,Python也是一种伟大的语言--无论是对于数据科学还是通用计算。而且R用户可能有很好的理由想用Python做一些事情。也许它是一个伟大的库,但没有R语言的对应物(还没有)。

由于R的reticulate包,你可以在R脚本中直接运行Python代码,并在Python和R之间来回传递数据。

[ 在InfoWorld的 "Do More with R "视频系列中获取Sharon Machlis的R技巧。

如果你想继续学习,用install.packages("reticulate")和library(reticulate)安装并加载reticulate。

为了保持简单,让我们从两行Python代码开始,导入用于基本科学计算的NumPy包并创建一个四个数字的阵列。Python 代码看起来像这样:

import numpy as npmy_python_array = np.array([2,4,6,8])

而这里有一种方法可以在 R 脚本中正确完成:

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

py_run_string() 函数执行括号和引号内的任何 Python 代码。

如果你在 R 中运行这段代码,它可能看起来像什么都没有发生。在你的 RStudio 环境窗格中没有显示任何东西,也没有返回任何值。如果你在 R 中运行 print(my_python_array) ,你会得到一个错误,即 my_python_array 不存在。

但是如果你在 py_run_string() 函数中运行一个 Python 打印命令,例如

py_run_string("for item in my_python_array: print(item)")

你应该看到一个结果。

不过,如果你有超过几行的代码,像这样一行一行地运行 Python 代码会很烦人。所以有一些其他的方法可以在 R 和 reticulate 中运行 Python。

一种是把所有的 Python 代码放在一个普通的 .py 文件中,然后使用 py_run_file() 函数。我喜欢的另一种方式是使用 R Markdown 文档。

R Markdown 让你在一个文档中结合文本、代码、代码结果和可视化。你可以在RStudio中选择File > New File > R Markdown来创建一个新的R Markdown文档。

代码块以三个背号(```)开始,以三个背号结束,在RStudio中默认有一个灰色背景。它加载了 reticulate 包,然后你指定了你要使用的 Python 版本。(

``{r setup, include=FALSE, echo=TRUE}library(reticulate)use_python("/usr/bin/python")``

下面这第二块是Python代码。你可以像在Python文件中那样输入Python。下面的代码导入NumPy,创建一个数组,并打印该数组。

``{python}import numpy as npmy_python_array = np.array([2,4,6,8])for item in my_python_array: print(item)``

这里是最酷的部分。你可以在 R 中使用这个数组,把它称为 py$my_python_array (一般来说,py$objectname)。

在接下来的这段代码中,我把 Python 数组存储在一个叫做 my_r_array 的 R 变量中。然后我检查这个数组的类。

``{r}my_r_array <- py$my_python_arrayclass(my_r_array)``

这是一个类 "数组",这并不是你对这样一个 R 对象的期望。

``{r}my_r_vector <- as.vector(py$my_python_array)class(my_r_vector)my_r_vector <- my_r_vector * 2```

接下来是很酷的部分。我可以在Python中使用那个R变量,作为r.my_r_array(更普遍的是r.variablename),例如

``{python}my_python_array2 = r.my_r_vectorprint(my_python_array2)``

如果你想看看这看起来像什么,而不用在你的系统上设置Python,请查看本故事顶部的视频。


本文标签

热门标签

会员评论