在R中运行Racket代码

时间:2015-08-21 15:29:02

标签: r racket

有没有办法从Racket运行R代码(R脚本调用球拍代码)?

我看着Rseek和其他来源,没有任何指示。

1 个答案:

答案 0 :(得分:9)

最近在Racket邮件列表中出现了一个类似的问题,有人发布了一个链接到Matthew Flatt suggested starting a subprocess and piping的旧帖子。

  

看起来朱莉娅没有提供外国接口(例如,打电话   朱莉娅来自C)。所以,我认为你必须单独管理朱莉娅   通过processsubprocess处理并与流程进行通信   通过stdin和stdout。

     

在2014年1月29日星期三16:58:29 -0800(太平洋标准时间),E Comer写道:

     
    

Hi Racket开发人员,程序员和用户:

         

有没有办法从DrRacket调用Julia函数? [我试图整合     Julia的数字运算能力与Plot的漂亮图形     Racket中的模块,用于研究特定动力系统的某些特性]

         

非常感谢您的支持。

         

恩里克

  

例如,编写一个循环的小型Racket程序:从stdin读取,将结果写入stdout。它的读写格式取决于您。它可以读取s表达式(方便在Racket中)并输出一个面向行的结果(在R中可能更方便,我不知道)。

然后让R启动Racket程序作为子进程,并与它的stdin和stdout对话。

作为反向的一个示例(具有到子进程的Racket管道),请参阅this Racket "client"this Python "server" subprocess对话。我不知道R是否有类似Racket的process,它会为你提供子进程的stdin和stout。

虽然FFI似乎是"正确"实际上,在高级语言之间编组事物可能具有挑战性。当你有一些特定的互操作时,它通常是矫枉过正的。我的建议是从管道到子流程的方法开始。它通常简单可靠。它可能会变得足够快以满足您的需求。有时甚至更快。[1]

[1]:作为一些传闻,请查看GitHub在Ruby代码中使用Python编写的Pygments的历史。有一次,他们有一些精心设计的方法在Ruby中嵌入Python。为了加快速度,他们转而在子进程和管道中运行Pygments。 (无论如何,这是我对提交历史的理解。)