我想从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。
感谢您的帮助。