我正在对大量列联表进行渔夫精确检验,并保存生物信息学问题的 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
现在我可以模拟 pval:
result <- fisher.test(data, simulate.p.value = TRUE, B = 1e5)
但恐怕我需要大量的模拟才能获得准确的结果,因为在某些情况下我的 pval 可能非常小。
因此,我的问题是否有某种方法可以预先检查列联表是否太复杂而无法精确计算?仅在这些情况下,我就可以转而使用 B=1e10 等的大量模拟。或者至少跳过那些值为“NA”的表,以便我的工作真正完成?
也许你可以使用tryCatch
获得所需的行为fisher.test
失败?也许是这样的:
tryCatchFisher<-function(...){
tryCatch(fisher.test(...)$p.value,
error = function(e) {'too big'})
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)