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

如何在R Shiny中实现长列表无终止滚动?两万+基因列表滚动异常求助

解决R Shiny selectizeInput长列表滚动停止问题

针对你用selectizeInput展示两万+基因时滚动中途停止的问题,可通过以下方法修复:

核心原因

使用server = TRUE时,selectize默认的maxOptions参数限制了下拉框可加载的选项数量(默认通常为1000或5000),超过该数量后不再加载后续选项,导致无法查看Z开头的基因。

解决方案

1. 初始化selectizeInput时配置关键选项

在UI部分初始化selectizeInput时,添加options参数设置足够大的maxOptions,同时调整下拉框高度避免视觉限制:

selectizeInput(
  inputId = "foo11",
  label = "选择基因",
  choices = NULL,
  options = list(
    maxOptions = 25000,  # 设置为比你的基因总数大的数值
    dropdownHeight = "600px",  # 调整下拉框高度,方便滚动查看
    scrollDuration = 0,  # 取消滚动动画,提升长列表流畅度
    dropdownParent = "body"  # 避免下拉框被页面元素遮挡
  )
)

# 同理处理foo22
selectizeInput(
  inputId = "foo22",
  label = "选择基因",
  choices = NULL,
  options = list(
    maxOptions = 25000,
    dropdownHeight = "600px",
    scrollDuration = 0,
    dropdownParent = "body"
  )
)

2. 保持update逻辑不变

你的observeEvent更新代码无需修改,只要UI端的maxOptions设置到位,server模式下就能正常加载所有选项:

observeEvent(data, {
  updateSelectizeInput(session, 'foo11', choices = rownames(data)[order(rownames(data))], server = TRUE)
})

observeEvent(data, {
  updateSelectizeInput(session, 'foo22', choices = rownames(data)[order(rownames(data))], server = TRUE)
})

额外验证点

  • 确认rownames(data)确实包含Z开头的基因,且order(rownames(data))排序正确
  • 若仍有问题,可暂时关闭server = TRUE(改为server = FALSE)测试,排除服务器端加载的特殊限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:45:31