1
나는 자바 함수에 보내고 싶은 매우 큰 희소 행렬을 가지고있다. 나는 그것을 달성하기 위해 자바 코드를 작성했지만 더 느린 것이므로 더 나은 솔루션을 찾고있다. 나는 코드가 보이는 스파 스 벡터의 ArrayList를 짓고 있어요 자바 측에서R에서 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)
다음과 같이 내가 R 3 개 배열에서 전송 :
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));
}
나는 R기로에서 보낼 필요 int [] [] 각 행의 인덱스를 포함하고 double [] []은 0이 아닌 요소의 실제 값을 포함합니다.