1

警告を抑制したい。ただし、次のコードは警告を抑制しません。

import rpy2.robjects as robjects

kstest=robjects.r['ks.test']

suppressWarnings=robjects.r['suppressWarnings']

x=robjects.IntVector([1, 2, 3])
y=robjects.IntVector([1, 2, 4, 5])

result=suppressWarnings(kstest(x, y))
print result
print result[1][0]

rpy2 のように関数を構築し、代わりに関数を呼び出すことができれば、警告は抑制できると思います。

f=function(x, y) {
    suppressWarnings(kstest(x, y))
}

しかし、rpy2 ドキュメントには例がありません。誰かがいくつかの例を持っていますか?

4

1 に答える 1

0

rpy2suppressWarnings(kstest(x, y))で実行すると、呼び出しkstest(x, y)が最初に評価され (そして警告が生成されます)、返された結果が に渡されsuppressWarnings()ます。

何が起こっているかというと、R はsuppressWarning()引数として渡された呼び出しによって生成された警告を黙らせるということです。これが可能なのは、R ではパラメーターが関数の本体で必要な場合にのみ評価されるためです。Python との顕著な違い。

rpy2 でそれを模倣する方法は、未評価の呼び出しを作成してに渡すsuppressWarning()か、R への呼び出しをプッシュして、呼び出しをラップする R 関数を作成することです。ドキュメントには、文字列を R コードとして評価する方法と、関数を使用した例が示されています。

于 2012-11-02T14:08:53.017 に答える