1
私はJava関数に送信したい非常に大きな希薄な行列を持っています。私はそれを達成するためのJavaコードを書いたが、遅いので、私はよりよい解決策を探している。私はR anから送信する必要がRからJavaへの疎行列を移動する
int[] ci=new int[nc];
double[] vals=new double[nc];
for(int i=0; i < ia.length && ro < nc; ro++){
int nv=0;
while(i < ia.length && ro == ia[i]){
ci[nv]=ja[i];
vals[nv]=x[i];
nv++;
i++;
}
if(nv==0){// add empty row
newList.add(Vectors.sparse(nc,new int[]{0},new double[] {0.0}));
continue;
}
int[] ciL=Arrays.copyOf(ci, nv);
double[] vaL=Arrays.copyOf(vals, nv);
newList.add(Vectors.sparse(nc,ciL,vaL));
}
:私はJava側で
TMPmat <- as(mySpMat, "TsparseMatrix")
[email protected]
[email protected]
[email protected]
# order by row
ro=order(ia)
myfun(.jarray(ia[ro],dispatch=T),.jarray(ja[ro],dispatch=T), .jarray(x[ro],dispatch=T)
を次のように私は次のようなコードに見えるスパースベクトルのArrayListのを構築していますRから3つの配列を送っ 各行のインデックスを含むint [] []、非ゼロ要素の実際の値を含むdouble [] []