从R运行Python

2022-03-03 00:00:00 python r shiny rstudio

问题描述

我知道两种语言(R/Python)都有多个库来调用另一种语言的模块。我正在寻找一种方法,让我的代码的后端运行在python中,主要是因为.pyc和速度,还有前端运行在R中,这样我就可以有一个闪亮的应用程序。我找不到为后端制作Python机器的方法。如果有人知道如何在R/R Studio中做到这一点,请回复。

Python

我对它的速度没有很好的基准测试,但是reticulate包是我所知道的在不使用Web服务器的情况下与推荐答案脚本来回传递数据的最佳方式。它允许您将Python对象导入到R中,在R中它们将像R对象一样工作,接受参数并返回值。

当我只想从单个文件运行函数时,我遇到了一些不稳定的问题。它遇到了IMPORT语句和相互调用的多个函数的问题。运行良好的方法是单独运行import语句(请参阅下面的sapply()语句),并将我的python脚本中的所有代码合并到一个对象中。这工作得很好,看起来和在python中正常运行一样快(尽管我没有做过任何真正的基准测试)

library(reticulate)
use_python(python = '/usr/bin/python') # optionally specify python location

# Import statements are here, not in the file
sapply(c("import mysql.connector", "import re"), py_run_string)

# File contains only the definition of  class MismatchFinder
source_python("python_script.py") 

# Now we can call on that python object from R
result <- MismatchFinder()$find_mismatch(arg1, arg2)

我的印象是,如果您将python代码放到一个模块中并使用py_module <- import_from_path('my_python_module', path = 'PATH')加载它,可能会更简单,但我没有尝试这样做。

希望这能有所帮助!

相关文章