-->

从使用Python rpy2调用自定义功能(Calling Custom functions fro

2019-07-21 15:30发布

有没有一种方法调用在一个文件中定义的函数说myfunc.r

---------------myfunc.r --------------
myfunc = function(){
  return(c(1,2,3,4,5,6,7,8,9,10))
}

getname = function(){
  return("chart title")
}

---- Python 
   How to call getname() here ?

任何帮助将不胜感激 ?

Answer 1:

该是rpy2功能,将有助于使这一清洁非倾销对象到全球的工作区。

from rpy2.robjects.packages import STAP
# if rpy2 < 2.6.1 do:
# from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage
# STAP = SignatureTranslatedAnonymousPackage
with open('myfunc.r', 'r') as f:
    string = f.read()
myfunc = STAP(string, "myfunc")

在R文件中的对象现在可以访问myfunc.myfuncmyfunc.getname

查看各机制的文档导入任意R代码里面作为一个包 (DOC年长这里 )。



Answer 2:

你可以做这样的事情(Python代码这里)

import rpy2.robjects as robjects
robjects.r('''
       source('myfunc.r')
''')

 r_getname = robjects.globalenv['getname']

然后调用它

r_getname()


Answer 3:

我建议你使用什么user3282437建议在这里 :

import rpy2.robjects as robjects
r_source = robjects.r['source']
r_source('/path_to_file/myfunc.R')
r_getname = robjects.globalenv['getname']

我不知道,这是一个全球性的问题,但我的Windows机器上直接调用像agstudy建议:

import rpy2.robjects as robjects
robjects.r('source("some_file.R")')

导致蟒蛇崩溃。



文章来源: Calling Custom functions from Python using rpy2
标签: python r rpy2