python 3.6中的Rpy2有时工作有时不工作

问题描述

我正在使用 rpy2 在 django 项目(python 是 3.6)中运行我的 R 脚本,但我遇到了一个奇怪的错误。有时我的整个代码都在工作,有时 r objectNULL。我的 R 版本在服务器上是 4.0.3。

>>>>>>my import statements
import rpy2.robjects as ro
import numpy as np
import rpy2.robjects.packages as rpackages
rpackages.importr('readxl') and some more
>>>>> my code
path2script = os.path.join(settings.BASE_DIR,'r_scripts','script.R')
print('txt_path>>>>>',txt_path)
ro.globalenv['args'] = ro.vectors.StrVector([txt_path])
print('ro.globalenvargs>>>>>>',ro.globalenv['args'])
r = ro.r
print('r>>>>>>>>',r)
obj = r.source(path2script)                 
print('obj>>>>>>>>>',obj)
returnarray  = np.array(obj,dtype="object")
print('returnarray',returnarray)

这是我的代码运行时终端的样子。

txt_path>>>>> /home/ubuntu/4triangle/r_files/args.txt
ro.globalenvargs>>>>>> [1] "/home/ubuntu/4triangle/r_files/args.txt" 
r>>>>>>>> <rpy2.robjects.R object at 0x7f518ce767b8>
platform: x86_64-pc-linux-gnu
arch: x86_64
os: linux-gnu
system: x86_64,linux-gnu

这就是我的代码不工作时终端的样子。

txt_path>>>>> /home/ubuntu/4triangle/r_files/args.txt
ro.globalenvargs>>>>>> <rpy2.rinterface_lib.sexp.NULLType object at 0x7f518f663048> [RTYPES.NILSXP]
r>>>>>>>> Error in get_data_from_rscript 'NULLType' object is not callable

恰好在“ro.r”行,python 返回一个错误内容为:

TypeError: 'NULLType' object is not callable"

一段时间后,同样的代码可以正常工作,没有任何错误

我对为什么 r object 得到 NULL 感到有些困惑。 任何帮助将不胜感激。

script.r 中的一些代码如下:-

server_file_path <- "/home/ubuntu/4triangle/r_files"
setwd(server_file_path)
sp = args[1]
con=file(sp,open="r")
args=c(readLines(con)) 
file_path <- args[1]
file_name <- args[2]

main_function  <- function(){
    if(method == "stochastic"){
        FouResT.stotastic()
    }
  else if(method =="re_reserving"){
    FouResT.reserving()
  }
    else{
        FouResT.ChainLadder()
    }
}   
main_function()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)