如何将 Python 函数与 rpy2 结合?

How to combine Python function with rpy2?

我正在尝试定义一个涉及 rpy2 步骤的 Python 函数。这是我的代码:

from rpy2 import robjects
df=robjects.DataFrame.from_csvfile('mydataframe.csv')    

dplyr = importr('dplyr')
from rpy2.robjects.lib.dplyr import DataFrame

def boxplot(x):
        plot_df = (DataFrame(df).
                   filter('VAR1 == x' ))

        grdevices.png(file='boxplot.png')

        pp = ggplot2.ggplot(plot_df ) + \
             ggplot2.aes_string(x='VAR1', y='VAR2') + \
             ggplot2.geom_boxplot()
    
        pp.plot()
    
        grdevices.dev_off()

但是当 运行 boxplot(24) 时,我得到这个错误:找不到对象 'x'。

如何混合使用这两者?根据文档,Python syntax ** 似乎是一种解决方案,但尚不清楚如何使用它。

谢谢

问题在这里:

plot_df = (DataFrame(df).
           filter('VAR1 == x' ))

字符串VAR1 == x将被计算为R表达式,但是R 对 Python.

中定义的变量 x 一无所知

如果 x 是一个简单的标量,您可以尝试创建一个字符串 包含您要筛选的值:

plot_df = (DataFrame(df).
           filter('VAR1 == %r' % x))

注意: @Parfait 关于 Dataframe 的观点是我最初错过的。假设这是一个 dplyr DataFrame,而不是 pandas DataFrame。