R中使用sjPlot的tab_model循环保存html文件失败如何解决?
循环中tab_model无法导出文件的解决方案
问题原因
sjPlot包的tab_model函数默认配置下,在循环这类非交互式运行场景中,会优先将结果输出到查看器面板,不会触发磁盘写入逻辑,因此出现无报错但无文件生成的情况。
修复代码
核心调整是在tab_model参数中添加show = FALSE,强制函数将结果写入指定的文件路径:
keys <- c("a","b","c") for (i in keys) { formula <- as.formula(paste0("int", "~","int2", "+","int3")) x2 <- lme(formula, data = df, random = ~ 1 | int4, na.action = na.omit) # 新增show = FALSE参数强制写入文件 tab_model(x2, file = paste0('name_', i,"_toshow.html"), show = FALSE) }
额外排查建议
- 运行
getwd()查看当前R的工作目录,生成的html文件默认保存在该目录下,也可以将file参数替换为绝对路径(如"/Users/xxx/documents/name_a_toshow.html")避免找不到文件 - 若公式实际需要和循环变量
i关联,可调整as.formula中的拼接逻辑,避免所有循环生成的模型完全一致 - 可在循环内添加
print(paste0("已完成",i,"对应的模型导出"))确认循环执行进度
内容的提问来源于stack exchange,提问作者Elad
相关产品推荐
相关产品推荐

