通过将DataFrame传递到此R代码来在Python中获得R代码

时间:2019-03-11 15:48:06

标签: python r pandas rpy2

我想从Python调用一个已经编写的R代码(通过采购),但是想将Python中的DataFrame传递给该R代码。

我在这里提供一个非常基本的示例,其中的数据产生两个变量var1和var2。

例如,将其作为我的R代码以计算加权平均值(与Rcode.R保存在同一文件夹中):

result <- weighted.mean(r_df$var1, r_df$var2, na.rm = TRUE)

在Python中,我加载了所有相关模块并准备了DataFrame:

import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
pandas2ri.activate()
import pandas as pd
df = pd.DataFrame({"var1": [5, 4, 8, 6, 10], "var2": [1.3, 1.2, 1, 1.5, 0.8]})

我已经了解到该数据帧可以转换为R数据帧:

r_df = pandas2ri.py2ri(df)

现在我想获取我的R代码:

r_source = ro.r("source")
r_source("Rcode.R")

但是收到ErrorMessage:

RRuntimeError: Error in weighted.mean(r_df$var1, r_df$var2, na.rm = TRUE) : object 'r_df' not found

是否有任何方法可以获取R代码并告诉R使用Python创建的数据框?我知道在Python中直接使用R表达式/ R代码的解决方案,但就我而言,我使用的现有R脚本过于复杂,无法“转换”为Python。

感谢您的帮助。

0 个答案:

没有答案