如何将 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。
我正在尝试定义一个涉及 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。