使用Saint Lague算法的Shiny App本地正常shinyapps.io运行报错
错误原因
本地运行正常但部署后报错的核心原因是代码中使用了Rfast包的nth函数,但你没有在依赖项中显式声明加载该包:
- 本地RStudio环境中你大概率之前已经手动加载过
Rfast包,所以调用Rfast::nth可以正常返回结果 - 部署到
shinyapps.io后,运行环境是全新初始化的,未安装/加载Rfast包时,函数调用失败返回空值,后续new_div函数中if (divis_r > divis[1] & divis_r <= divis[2])的判断逻辑拿到空值,就触发了"Missing values where TRUE/FALSE needed"的报错。
修复方案
- 在依赖包引入部分添加
Rfast的加载声明:
library(DT) library(shiny) library(tidyverse) library(Rfast) # 新增此行
- 可选优化:在
new_div函数处理div_range参数前添加空值过滤,避免极端场景下的NA问题:
new_div <- function(div_range, descen) { div_range <- na.omit(div_range) # 新增此行过滤空值 divis <- Rfast::nth( x = div_range, k = 2, num.of.nths = 2, descending = descen ) %>% as.vector() %>% sort() # 剩余原有代码保持不变 }
修改完成后重新部署即可正常运行。
内容的提问来源于stack exchange,提问作者Niklas Haffert
相关产品推荐
相关产品推荐

