有没有一种方法可以调用文件中定义的函数,例如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 ?
任何帮助将不胜感激吗?
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")
现在可以使用myfunc.myfunc
和myfunc.getname
访问R文件中的对象。
检查有关importing arbitrary R code as a package的文档(旧文档here)。
您可以执行以下操作(此处为python代码)
import rpy2.robjects as robjects
robjects.r('''
source('myfunc.r')
''')
r_getname = robjects.globalenv['getname']
然后您称呼它
r_getname()
我建议使用user3282437建议的here:
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")')
导致python崩溃。