【问题标题】:Calling nested R script from python using rpy2使用 rpy2 从 python 调用嵌套的 R 脚本
【发布时间】:2021-06-18 16:28:50
【问题描述】:

我有 2 个单独的 R 脚本,例如 func1.R 和 func2.R。两者都是接收输入并返回输出的函数,例如 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 代码是什么?

【问题讨论】:

  • 函数 1 和 2 和 3 是在不同的 R 脚本上还是在同一个 R 脚本上?
  • 感谢您的回复。在不同的 R 文件中,func1.R、func2.R 和 func3.R。 func3.R 不是问题的一部分。假设我有 2 个 R 脚本,一个在另一个内部调用。
  • 由于它们位于不同的 Rscripts 中,您应该只加载最后一个作为其他 Rscripts 来源的 Rscript。
  • 感谢您的回复。在不同的 R 文件中,func1.R、func2.R 和 func3.R。 func3.R 不是问题的一部分。在python中单独调用func3.R没有问题,因为里面没有调用,我提供了python代码。假设我有 2 个 R 脚本,例如 func1.R 和 func2.R,func2.R 在 func1.R 中被调用。
  • 我明白你的意思。只需确保 func2.R 脚本的第一行来源 func1.R 脚本,然后仅按照您刚刚显示的方式将 func2.R 来源到 python

标签: python r nested rpy2


【解决方案1】:

您的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))

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 2015-05-18
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多