【问题标题】:Can't find certain function when calling R within java在java中调用R时找不到某些函数
【发布时间】:2014-09-28 20:35:37
【问题描述】:

我正在尝试在 Java 中使用 R,特别是在 Processing 中。 我想使用readPNG 函数,但是当我尝试使用时,R 显示错误readPNG function can't be found。这非常奇怪,因为我有png library 处于活动状态,如果我尝试直接从 R 中使用它,这个训练就好了。我正在使用Rservepackage 连接java和R。任何建议都会非常受欢迎。 如果有帮助,这是我正在使用的部分代码。

import org.rosuda.REngine.Rserve.*;
import org.rosuda.REngine.*;

double[] data;

void setup() {
  size(300,300);
  try {
    RConnection c = new RConnection();  
    // generate 100 normal distributed random numbers and then sort them 
    data= c.eval("readPNG('juego-11932.png')").asDoubles();

  } catch ( REXPMismatchException rme ) {
    rme.printStackTrace();

  } catch ( REngineException ree ) {
    ree.printStackTrace();
  }
}

void draw() {
  background(255);
  for( int i = 0; i < data.length; i++) {
    line( i * 3.0, height/2, i* 3.0, height/2 - (float)data[i] * 50 );
  }
}

【问题讨论】:

  • 你加载过 png 包吗?
  • 在 Rstudio 中它已加载,但我没有在处理中执行 library(png) 或类似命令。
  • 您的 java 脚本使用的 R 会话和您通过 RStudio 打开的会话很可能是不同的。尝试从脚本中加载包。也许data= c.eval("{library(png); readPNG('juego-11932.png')}").asDoubles()
  • 谢谢!这有所帮助,但并非完全如此。我还必须通过使用setwd() 将我的工作目录设置为正确的方向来指定我的文件juego-11932.png 的位置。这是以防万一有人阅读了这个问题并发现它有用!

标签: java r processing rserve


【解决方案1】:

您的 Java 代码连接到新的 R 会话,因此不会加载任何包。因此,您必须使用 png::readPNG() 或显式加载 png 包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多