使用 rpy2 从 python 调用嵌套的 R 脚本

Calling nested R script from python using rpy2

我有 2 个独立的 R 脚本,例如 func1.R 和 func2.R。两者都是接收输入和 return 输出的函数,例如 func1(a,b) 和 func2(c,d)。但是,func2.R 被调用来计算 func1.R 中的内容,如下所示:

func1<-function(a,b){
 compute c and d here somehow
 e <- func2(c,d)
 return e
}

调用单个 R 脚本,例如 func3.R,没有嵌套调用:

func3<-function(a,b){     
  e <- a + b
  return e
}

以下 Python 有效:

import rpy2.robjects as robjects    
def func3(a,b):
    path = 'path_to/R_files/'
    ro=robjects.r        
    ro.source(path+"func3.R")    
    return ro.func3(robjects.FloatVector(a),robjects.FloatVector(b))

使用 func1.R 和 func2.R 的 Python 代码是什么?

您的 func1.R 脚本:

#define function1 here:
func1 <- function(c, d){
 }

您的 func2.R 脚本:

#define function 2 that uses function1

source("func1.R")
func2 <- function(a,b){
 compute c and d here somehow
 e <- func2(c,d)
 return e
}

您的 python 代码:

import rpy2.robjects as robjects    
def func3(a , b):
    path = 'path_to/R_files/'
    ro = robjects.r        
    ro.source(path + "func2.R")    
    return ro.func3(robjects.FloatVector(a),robjects.FloatVector(b))