0

我是 R 新手,一直在尝试使用 JRI。通过 JRI,我使用了“eval()”函数来获得某些结果。如果我想执行 R 脚本,我使用了“source()”。但是,我现在处于需要对连续传入的数据执行脚本的情况。虽然我仍然可以使用“source()”,但从性能的角度来看,我认为这不是最佳方式。

我所做的是将整个 R 脚本读入内存,然后尝试使用“eval()”传递脚本——但这似乎不起作用。我已确保脚本已正确加载到内存中 - 这是因为如果我将此脚本(加载到内存中)写入文件并获取此新创建的文件,它确实会产生预期的结果。

有没有办法让我不一遍又一遍地获取相同的文件并从内存中执行它?我的每个数据单元都是独立的,并且必须在它们可用时立即进行独立处理。我迫不及待地收集一堆数据单元,然后将它们传递给 R 脚本。

我进行了很多搜索,但没有找到与此相关的任何内容。任何可以帮助我朝这个方向发展的指针都会非常有帮助。

4

1 回答 1

0

我处理这个的方式如下 -

  1. 我将整个脚本封装到一个函数中。
  2. 我在程序执行开始时获取了脚本文件(现在包含函数)。
  3. 在我获取文件的地方,我现在只是调用包含脚本本身的函数,即 -

    REXP 结果 = rengine.eval("retVal<-" + getFunctionName() + "()");

    在这里,getFunctionName() 给了我包含脚本的函数的名称。

由于它已加载到内存中并且可用,因此我不必每次要执行脚本时都获取脚本文件。传递给脚本的任何参数都作为 env 完成。变量。

这似乎是一种解决方法,但解决了我的问题。欢迎任何更好的选择。

于 2014-01-10T11:59:31.563 回答