现在我在Jupyter笔记本中使用Rpy2来适应von Mises发行版,代码是
%load_ext rpy2.ipython
%R require(movMF)
%%R -i dir_data,n_vM_dir -o theta,alpha
result = movMF(dir_data, n_vM_dir, nruns = 10)
theta = result$theta
alpha = result$alpha
dir_data
,n_vM_dir
theta
,alpha
它将在Python中使用dir_data
,n_vM_dir
变量并将它们传递给R.在拟合之后,theta
和alpha
将传回Python,所以我可以在以后的分析中使用它们。
现在,我想将代码重构为Python函数,所以我可以重用它,我该怎么做?
到目前为止我能做到这一点
import rpy2.robjects as robjects
# pass dir_data, n_vM_dir into R
robjects.r('''
result = movMF(dir_data, n_vM_dir, nruns = 10)
theta = result$theta
alpha = result$alpha
''')
theta = robjects.r('theta')
alpha = robjects.r('alpha')
# Return theta, alpha
我可以通过robjects.r
访问数据,主要问题是
dir_data
,n_vM_dir
)。我已阅读http://rpy2.readthedocs.io/en/version_2.8.x/introduction.html
中的文档我发现变量是由
创建的from rpy2.robjects import FloatVector
ctl = FloatVector([4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14])
但与jupyter笔记本中的R magic
相比,这看起来非常复杂。