我正在对大量的列联表进行渔民的精确测试,并为生物信息学问题保存p-val。其中一些列联表很大,所以我尽可能地增加了工作空间;但是当我运行以下代码时出现错误:
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或其他东西的大量模拟。或者至少只是跳过那些值为&#34; NA&#34;这样我的工作真的完成了吗?
答案 0 :(得分:1)
当tryCatch
失败时,您是否可以使用fisher.test
来获取所需的行为?这样的事情可能是:
tryCatchFisher<-function(...){
tryCatch(fisher.test(...)$p.value,
error = function(e) {'too big'})
}