朋友有一些我可能觉得有用的R脚本。但我使用Python,当他升级脚本时,我希望能够使用他的更新。
是否可以在Python中按原样嵌入R脚本?
他可能写的典型R脚本被命名为例如quadro.R并具有以下形式:
quadro <- function(x) {
return(x*x)}
我可以以某种方式从python中使用参数“3”调用quadro.R并在Python中返回结果“9”吗?我在Linux系统上安装了R。
据我了解rpy/rpy2,我可以在python中使用R命令但不使用R脚本,或者我误解了什么?是否有其他方法可以在Python中使用R脚本?
答案 0 :(得分:3)
首先在python中加载整个R脚本,然后获取在python中分配和调用的任何R对象(函数,变量等)。
示例python脚本,
from rpy2 import robjects
robjects.r('''
source('quadro.R')
''') #load the R script
quadro = robjects.globalenv['quadro'] #assign an R function in python
quadro(3) #to call in python, which returns a list
quadro(3)[0] #to get the first element: 9
答案 1 :(得分:0)
import rpy2.robjects.packages.SignatureTranslatedAnonymousPackage as STAP
with open('quadro.R') as fh:
rcode = fh.read()
quadro = STAP(rcode, 'quadro')
# The function is now at
quadro.quadro()
# other functions or objects defined in that R script will also be there, for example
# as quadro.foo()