当前位置: 首页 > 工具软件 > RPython > 使用案例 >

python 运行r语言_如何在R中运行Python

阙新觉
2023-12-01

python 运行r语言

尽管我很喜欢R,但很显然Python还是一种很棒的语言-既适用于数据科学又适用于通用计算。 R用户想要在Python中做一些事情可能有充分的理由。 也许这是一个很棒的库,还没有R等效项。 或者您要访问的API带有Python中的示例代码,但没有R。

借助R Reticulate软件包 ,您可以在R脚本中直接运行Python代码,并在Python和R之间来回传递数据。

[ 在我们的视频教程系列中获得Sharon Machlis的R技巧 | 阅读InfoWorld教程: 学习使用R处理大数据 如何重塑R中的数据 触手可及的R数据操作技巧R的 初学者指南 | 通过InfoWorld大数据报告新闻通讯了解最新的分析和大数据。 ]

除了网状结构,您还需要在系统上安装Python。 您还需要Python代码所依赖的任何Python模块,程序包和文件。

如果您想继续,请使用install.packages("reticulate")library(reticulate)安装并加载网状library(reticulate)

为简单起见,让我们从仅两行Python代码开始,以导入NumPy软件包以进行基本的科学计算,并创建一个由四个数字组成的数组。 Python代码如下所示:

import numpy as np
my_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中运行Python并生成网格。

一种是将所有Python代码放入常规的.py文件中,并使用py_run_file()函数。 我喜欢的另一种方法是使用R Markdown文档。

R Markdown使您可以在单个文档中组合文本,代码,代码结果和可视化。 您可以通过选择“文件”>“新建文件”>“ R Markdown”在RStudio中创建一个新的R Markdown文档。

代码块以三个反引号( ``` )开始,以三个反引号结束,并且在RStudio中默认情况下它们具有灰色背景。

第一个块用于R代码-您可以在左括号后的r看到它。 它加载了网状包,然后指定要使用的Python版本。 (如果未指定,它将使用您的系统默认值。)

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

下面的第二个块是针对Python代码的。 您可以像在Python文件中一样键入Python。 下面的代码导入NumPy,创建一个数组,然后打印该数组。

```{python}
import numpy as np
my_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_array
class(my_r_array)
``

这是一个“数组”类,这与您对R对象的期望并不完全相同。 但是我可以使用as.vector(my_r_array)将其转换为常规向量,并对其执行任何R操作,例如将每一项乘以2。

```{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_vector
print(my_python_array2)
```

如果您想在不设置Python的情况下看到它的外观,请查看此故事顶部的视频。

翻译自: https://www.infoworld.com/article/3340120/how-to-run-python-in-r.html

python 运行r语言

 类似资料: