【问题标题】:Executing an R script in a way other than using source() in JRI以不同于在 JRI 中使用 source() 的方式执行 R 脚本
【发布时间】:2013-12-23 06:56:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: r rjava jri


    【解决方案1】:

    我的处理方式如下-

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

      REXP 结果 = rengine.eval("retVal

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2019-11-25
      • 2011-12-23
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多