Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R与Python之间的双向通信_Python_R_Ipc - Fatal编程技术网

R与Python之间的双向通信

R与Python之间的双向通信,python,r,ipc,Python,R,Ipc,我有一些内部使用回调的Python代码。我希望能够从R中调用此代码,并让回调与R会话通信(例如,在回调中执行R代码)。基本上,Python代码在调用时充当R的驱动程序。我不知道如何正确地做到这一点 像RPy和rPython这样的包似乎不能提供我需要的东西。Python代码在执行回调时需要保持特定的状态,因此不需要从R中连续调用Python函数 据我所知,唯一的解决方案是在R中启动Python子进程,然后在必要时让它们进行通信。通信将涉及如下顺序: Python->R:回调命令 R->Pytho

我有一些内部使用回调的Python代码。我希望能够从R中调用此代码,并让回调与R会话通信(例如,在回调中执行R代码)。基本上,Python代码在调用时充当R的驱动程序。我不知道如何正确地做到这一点

像RPy和rPython这样的包似乎不能提供我需要的东西。Python代码在执行回调时需要保持特定的状态,因此不需要从R中连续调用Python函数

据我所知,唯一的解决方案是在R中启动Python子进程,然后在必要时让它们进行通信。通信将涉及如下顺序:

  • Python->R
    :回调命令
  • R->Python
    :回调的结果
在研究了一系列备选方案后,我很难想出最佳的沟通策略(理想情况下,双向和平台无关):

  • 使用匿名管道。不过,对我来说,这似乎是最好的解决办法
  • 使用可以关闭和重新打开的命名管道以获得读写功能。R会话将分别负责在调用Python之前和Python完成之后生成和删除命名管道

  • 我觉得我把事情搞得太复杂了,但我想不出别的办法。有什么想法吗?

    答案很旧,但是如果有人需要一个没有安装的工具,请查看以下内容:


    它能够按照您的要求进行通信和使用回调,例如,为什么不使用
    rpy2
    ?在
    R对象中执行R代码
    @agstudy如果我没有弄错,
    rpy2
    运行嵌入式R进程。在我的用例中,我希望在R回调中访问现有R工作区中的数据(例如,不创建嵌入Python中的新R工作区)。是否可以使用
    rpy2