2016-10-25 7 views
0

私は、多数の不測の事態の表でフィッシャーの正確なテストを行い、バイオインフォマティクスの問題のp-valを保存しています。これらのコンティンジェンシーテーブルの中には大きさがあるものがありますので、可能な限りワークスペースを増やしました。私は、ワークスペースのサイズを増やす場合、私は別のエラーを取得R fisher.testワークスペースのエラーを避ける方法

result <- fisher.test(data,workspace=2e9) 
LDSTP is too small for this problem. Try increasing the size of the workspace. 

result <- fisher.test(data,workspace=2e10) 
cannot allocate memory block of size 134217728Tb 

今私はちょうどシミュレートすることができpvals:

result <- fisher.test(data, simulate.p.value = TRUE, B = 1e5) 
を、私は、次のコードを実行すると、私はエラーを取得します

でも、正確な結果を得るには膨大な数のシミュレーションが必要になることがあります。

このように、私の質問では、予備テーブルが正確に計算するには複雑すぎるかどうかを事前にチェックする方法があるのでしょうか?そのような場合だけでは、B = 1e10などで多数のシミュレーションを使用することに切り替えることができます。あるいは、少なくとも "NA"の値を持つテーブルをスキップして、私の仕事が実際に終了するようにしてください。

+0

データをよりよく記述します。 –

+0

各テストのデータは、0から約300までの範囲のnx2の間欠的な行列です。行列のサイズは、テストするために2x2,10x2,20x2などのように変化します。どの行列がエラーを引き起こすかを推測することができます(より大きなものなど)、それらのパベルを推定しますが理想的にはクリーンなソリューションがあります。 – nak3c

答えて

1

多分tryCatchを使用して、fisher.testが失敗したときに望ましい動作を得ることができますか?このようなものがあります:

tryCatchFisher<-function(...){ 
    tryCatch(fisher.test(...)$p.value, 
    error = function(e) {'too big'}) 
    } 
関連する問題