1

kruskalmc というメソッドから結果を取得したいと考えています。

R コンソールの結果は次のようになります。

Multiple comparison test after Kruskal-Wallis 
p.value: 0.05 
Comparisons
      obs.dif critical.dif difference  
1-2    7.65     9.425108      FALSE
1-3   14.40     9.425108       TRUE 
2-3    6.75     9.425108      FALSE

今、差分列から値を取得したいと思います。

Javaで取得しようとすると:

REXP res = re.eval("result$dif.com$difference");

次のようなものが返されます: [BOOLi* ]

JavaでBOOLiオブジェクトを反復処理するにはどうすればよいですか?

私が欲しいのは値FALSE TRUE FALSEです。

4

3 に答える 3

1

私はJRIをあまり使用していませんが、誰もあなたに答えていないので、私はそれを使います.

res私は間違っているかもしれませんが、ブール配列に変換する方法はないようです– に変換する方法はありますがint[]、 、double[]およびString[]. 次のように、結果を整数に変換できます。

REXP res = re.eval("result$dif.com$difference");
int[] x = res.asIntArray();

for (int i = 0; i < x.length; i++) {
  System.out.println(x[i]);
}

値を表し、 を1表すことが返されます。Javaから必要な場合は、これらの数値をブール値に変換するか、そのまま使用することができます。TRUE0FALSE

理想的な解決策ではないので、誰かがより良いものを考え出すことを願っています.

于 2013-04-15T13:10:44.673 に答える
1

私が見る限り、問題は から にエクスポートするときの型変換Rですjava。JRIのドキュメントの一部を見る:

現在サポートされているオブジェクトは、文字列、整数、および数値ベクトルです。

再現可能な例を示すには (関数自身のドキュメントから):

require(pgirmess)
resp <-c(0.44,0.44,0.54,0.32,0.21,0.28,0.7,0.77,0.48,0.64,0.71,0.75,0.8,0.76,0.34,0.80,0.73,0.8)
categ <- as.factor(rep(c("A","B","C"),times=1,each=6))
k1 <- kruskalmc(resp, categ)

次に、次のことがわかりますis.logical(k1[[3]][,3]) == TRUE

> str(k1[[3]][,3])
logi [1:3] FALSE TRUE FALSE

最も単純な方法でRは、これを次のように変換しているように見えますが、

> as.numeric(k1[[3]][,3])
[1] 0 1 0

または、文字として送信することもできます:

> as.character(k1[[3]][,3])
[1] "FALSE" "TRUE"  "FALSE"

入ったら、javaそれをブール値に戻すか、作業している最終的な形式に戻す必要があります。

于 2013-04-15T15:08:42.343 に答える