Ro
の値を1つずつLogNormArray
(double[]
)に抽出するために、現在Ro.getElementAsDouble(index)
(コードは以下)を使用しています。しかし、私はコピーがメモリを浪費していることを心配しています。私はこれについて間違って考えているなら、私は非常に多くのJavaの初心者です。 C言語では、配列全体に対処する代わりに、単一のアドレスをコピーしてデータを「共有」します。類似のポインタ/アドレスを渡すワークフローはありますか?Renjin/Java - VectorクラスからJava配列クラス
玩具例は、私が働いている:ベクトル結果が配列に連動することが保証されていないことを
import java.util.Arrays;
import javax.script.*;
import org.renjin.sexp.*;
import org.renjin.script.*;
public class VectorRenjin {
public static void main(String[] args) throws Exception {
double[] LogNormArray = new double[10];
Vector Ro = LogNormalRand(10,0.0,1.0);
System.out.println("draws from log-normal " + Ro);
for(int i=0;i< Ro.length();i++) LogNormArray[i] = Ro.getElementAsDouble(i);
System.out.println("draws from log-normal " + Arrays.toString(LogNormArray));
}
public static Vector LogNormalRand(int n,double a, double b) throws Exception{
// create a script engine manager:
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
engine.put("n",n);
engine.put("a",a);
engine.put("b",b);
Vector res = (Vector)engine.eval("rlnorm(n,a,b)");
return res;
}
}
ありがとうございました。私はRenjinプロジェクトを本当に掘り下げています! – csta