You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中crosstable调用fisher.test报错:如何增大工作区大小?

解决crosstable中Fisher精确检验的FEXACT error 6问题
  • 方法1:通过test_args参数针对特定变量传递workspace参数
    crosstable的test_args参数支持为指定变量的检验函数传递额外参数。针对报错的diagnostico_estadio变量,可按如下方式设置:

    crosstable(database, by = variable, 
               test = list(diagnostico_estadio = "fisher"),
               test_args = list(diagnostico_estadio = list(workspace = 2e7)))
    

    示例中2e7是推荐的初始workspace值,可根据实际情况调整(比如增大至5e7)。注意该参数单位为4字节整数,值过大会占用过多内存,需合理设置。

  • 方法2:自定义Fisher检验函数并指定给目标变量
    使用purrr::partial包装fisher.test并预设workspace参数,再让crosstable对目标变量使用该自定义函数:

    library(purrr)
    # 包装fisher.test,固定workspace参数
    custom_fisher <- partial(fisher.test, workspace = 2e7)
    # 在crosstable中指定目标变量使用自定义检验函数
    crosstable(database, by = variable, 
               test = list(diagnostico_estadio = custom_fisher))
    
  • 方法3:全局替换所有分类变量的Fisher检验参数(谨慎使用)
    若希望所有需执行Fisher检验的变量都使用更大的workspace,可直接传递自定义函数给test参数,但此操作会覆盖crosstable默认的检验逻辑(比如原本用卡方检验的变量也会改用Fisher):

    crosstable(database, by = variable, 
               test = function(x, y) fisher.test(x, y, workspace = 2e7))
    

错误原因说明:
你遇到的FEXACT error 6是因为Fisher精确检验处理较大列联表时,默认分配的内存工作区(workspace)不足以容纳计算所需的中间数据。手动增大workspace参数可为检验分配更多内存,从而解决该报错。

内容的提问来源于stack exchange,提问作者Jorge A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:13