使用rpy2从Python调用自定义函数

use*_*582 11 python r rpy2

有没有办法调用文件中定义的函数,如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 ?
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 ?

lga*_*ier 14

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")
Run Code Online (Sandbox Code Playgroud)

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

查看有关将任意R代码作为包导入的文档(此处较旧的doc ).


ags*_*udy 8

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

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

 r_getname = robjects.globalenv['getname']
Run Code Online (Sandbox Code Playgroud)

那你叫它

r_getname()
Run Code Online (Sandbox Code Playgroud)