R Shiny:从模块内更改选项卡

2024-01-11

我有一个带有多个选项卡的闪亮应用程序,我希望选项卡内有操作按钮,允许用户切换选项卡。我找到了以下页面:https://www.titanwolf.org/Network/q/e6b187b8-6cad-4ece-ad16-7ec73ed2f758/y https://www.titanwolf.org/Network/q/e6b187b8-6cad-4ece-ad16-7ec73ed2f758/y 如何从模块内部在闪亮的选项卡面板之间切换? https://stackoverflow.com/questions/62135166/how-to-switch-between-shiny-tab-panels-from-inside-a-module,这似乎表明问题是范围/命名空间错误,但它们没有完全解释正在发生的事情,而且我没有足够的声誉点来评论其他要求澄清的 stackoverflow 帖子。

这是我的示例代码:

modtab1_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 1',
           value = NS(id, 'tab.1'),
           
           h4('This is the first tab'),
           actionButton(NS(id, 'nexttab'), 'Next Tab')
           
          )
}

modtab1_server <- function(id) {
  moduleServer(id,
               function(input, output, session) {
                 observeEvent(input$nexttab, {
                   updateTabsetPanel(session = session, inputId = NS(id, 'tabs'), selected = NS(id, 'tab.2'))
                   print('button clicked')
                 })
               })
}

modtab2_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 2',
           value = NS(id, 'tab.2'),
           
           h4('This is the second tab'),
          )
}


ui <- fluidPage(
  tabsetPanel(
    id = 'tabs',
    modtab1_ui('tab1'),
    modtab2_ui('tab1')
  )
)

server <- function(input, output, session) {
  modtab1_server('tab1')
}

shinyApp(ui = ui, server = server)

编辑以解决新问题

modtab1_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 1',
           value = NS(id, 'tab.1'),

           h4('This is the first tab'),
           actionButton(NS(id, 'nexttab'), 'Next Tab'),

           textInput(NS(id,'userid'), 'User ID'),
           textOutput(NS(id, 'useridout'))
          )
}

modtab1_server <- function(id) {
  moduleServer(id,
               function(input, output, session) {
                 observeEvent(input$nexttab, {
                   updateTabsetPanel(session = session, inputId =  'tabs', selected = NS('tab2', 'tab.2'))
                   print('button clicked'),
                 })
                 
                 output$useridout <- renderText(input$userid)
               })
}

modtab2_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 2',
           value = NS(id, 'tab.2'),

           h4('This is the second tab'),
           actionButton(NS(id, 'firsttab'), 'First Tab'),

           textInput(NS(id, 'userid'), 'User ID'),
           textOutput(NS(id, 'useridout'))
          )
}

modtab2_server <- function(id) {
  moduleServer(id,
               function(input, output, session) {
                 observeEvent(input$firsttab, {
                   updateTabsetPanel(session = session, inputId =  'tabs', selected = NS('tab1', 'tab.1'))
                   print('button clicked'),
                 })
                 
                 output$useridout <- renderText(input$userid)
               })
}


ui <- fluidPage(
  tabsetPanel(
    id = 'tab1-tabs',
    modtab1_ui('tab1'),
    modtab2_ui('tab2')
  )
)

server <- function(input, output, session) {
  modtab1_server('tab1')
  modtab2_server('tab2')
}

shinyApp(ui = ui, server = server)

再次编辑我在一个新问题中问了这个问题,得到了回答:闪亮的模块:在具有不同命名空间的模块内切换选项卡 https://stackoverflow.com/questions/69831550/shiny-modules-switch-tabs-from-within-modules-that-have-different-namespaces


我想这就是您正在寻找的。做了两个相当小的改变!一、在modtab1_server函数中,我改变了ns(id, 'tabs')只是'tabs'。我认为由于 inputId 位于模块内,因此它已经添加了 id,在本例中这意味着它添加了 tab1。使用您现有的代码,我认为 tabsetPanel 的 id 是“tab1-tab1-tabs”,因此通过删除ns(id)它应该将 inputId 称为“tab1-tabs”。第二个更改是使 tabsetPanel id 为“tab1-tabs”,以封装模块将“tab1”添加到 updateTabsetPanel 的 inputId 的方式。

modtab1_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 1',
           value = NS(id, 'tab.1'),
           
           h4('This is the first tab'),
           actionButton(NS(id, 'nexttab'), 'Next Tab')
           
  )
}

modtab1_server <- function(id) {
  moduleServer(id,
               function(input, output, session) {
                 observeEvent(input$nexttab, {
                   updateTabsetPanel(session = session, inputId = 'tabs', selected = NS(id, 'tab.2'))
                   print('button clicked')
                 })
               })
}

modtab2_ui <- function(id) {
  ns <- NS(id)
  tabPanel(title = 'Tab 2',
           value = NS(id, 'tab.2'),
           
           h4('This is the second tab'),
  )
}


ui <- fluidPage(
  tabsetPanel(
    id = 'tab1-tabs',
    modtab1_ui('tab1'),
    modtab2_ui('tab1')
  )
)

server <- function(input, output, session) {
  modtab1_server('tab1')
}

shinyApp(ui = ui, server = server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R Shiny:从模块内更改选项卡 的相关文章

  • 将循环转换为并行计算的函数

    我正在使用 R 编程语言 我遇到这个问题 我试图找出两个 shapefile 之间的成对交集 即第一个 shapefile 中的每个多边形与第二个 shapefile 中的所有多边形相交的百分比 我想我找到了解决这个问题的基本方法 Load
  • R中添加水印

    我在用magickR中的库 我想在一些图片上添加水印 I used image annotate功能如下 img lt image read C Users Maydin Desktop manzara png image annotate
  • decompose() 的周期太少[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 错误看起来像这样 decompose
  • R 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • 基于服务器中的条件逻辑呈现闪亮的用户输入

    我正在尝试设置一个闪亮的导航栏面板页面 其中用户控制我根据一组单选按钮中所做的初始选择来显示更改 我直接在 ui 中渲染单选按钮 然后在 Server r 中的 观察到的 逻辑控制结构内构建条件控件 弹出错误是因为我的初始 if 语句计算结
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 在 R 中创建一个运行计数变量?

    我有一个足球比赛结果的数据集 我希望通过创建一组类似于世界足球 Elo 公式的运行评级来学习 R 我遇到了麻烦 在 Excel 中看似简单的事情在 R 中并不完全直观 例如 4270 个观察中的前 15 个具有必要的变量 date t 1
  • 删除ggplot2中的负图区域[重复]

    这个问题在这里已经有答案了 如何删除 ggplot2 中 x 轴和 y 轴下方的绘图区域 请参见下面的示例 我尝试了几个主题元素 panel border panel margin plot margin 但没有任何运气 p lt ggpl
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o

随机推荐

  • Python range 函数如何在实际参数之前有一个默认参数?

    我正在编写一个函数 它接受一个可选列表并将其扩展到指定的长度 而不是写成foo n list None 我想知道如何模拟 Python 范围函数的行为 其工作原理如下 gt gt gt range 10 0 1 2 3 4 5 6 7 8
  • 批量上传图片到SSRS

    我们用了优秀的RSBuild http rsbuild codeplex com用于将报告批量上传到 SQL Server Reporting Services SSRS 但我找不到批量上传图像的方法 使用报告管理器一次上传一张图像是愚蠢的
  • (异步() => { })();这是什么?

    async function test async gt var a await this test1 var b await this test2 a var c await this test3 b this doThis a b c
  • 用于根据选择插入交叉引用的宏

    我目前在一家使用固定内部风格文档的公司工作 这包括我们的 Word 模板中内置的多级编号标题 IE 标题 1 1 1 标题 2 1 1 1 标题 3 etc 我们当前任务的很大一部分涉及添加对文档中其他部分的交叉引用 当文档有数百页且每页大
  • 使用 Eloquent (Laravel) 在分组之前进行排序

    我有一个包含以下列的 消息 表 CREATE TABLE messages id int 11 NOT NULL AUTO INCREMENT fromId int 11 NOT NULL toId int 11 NOT NULL mess
  • Java 函数在并行 MATLAB 中的非线性性能

    最近 我在我的项目中实现了并行化MATLAB http en wikipedia org wiki MATLAB计划 很大程度上取决于中提供的建议MATLAB 中 xlsread 速度慢 https stackoverflow com qu
  • 需要运行 .exe,然后在约 10 秒后终止它并移至批处理文件中的下一个命令

    我正在尝试创建一个运行 exe 的批处理文件 但在大约 10 秒后 在完成之前 杀死所述 exe 然后继续执行文件中的下一个命令 任何帮助将不胜感激 你可以使用这个 start program exe ping 127 0 0 1 n 10
  • Android Intent.ACTION_VIEW 基本身份验证

    如何将 HTTP 基本身份验证信息传递给Intent ACTION VIEW 这就是我激发意图的地方 public class OutageListFragment extends ListFragment implements Loade
  • 如何更改反向引用的大小写?

    我正在尝试修改 PowerShell 中的反向引用 但运气不佳 这是我的例子 456 Jane Doe replace d 3 2 ToUpper 1 如果我运行它 我会得到这个 简 无名氏 456 456 但我真的很期待这个 简 多伊 4
  • 将字符串(逐个字符)插入到更大的字符串中

    我试图通过用新字符串 toInsert 替换 原始 字符串中的子字符串来插入字符串 start参数是我要替换的子字符串的起始位置 注意 这是一个更大程序的一部分 但我只是想让这个功能发挥作用 include
  • 如何强制 PyCharm 检查requirements.txt 文件并建议更新?

    如何强制 PyCharm 检查requirements txt 文件并建议更新 我似乎无法控制这种情况何时发生 谢谢 我尝试打开任何 py 文件 检查包要求文件字段 设置 工具 Python 集成工具 没有任何东西触发 Windows 上的
  • 自定义表达式中的 Spotfire IF 语句 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 If Len case SPEC gt 0 case SPEC case type 当我尝试上面的公式时 我收到错误 gt 作为无
  • 符号查找错误(linux - c++)

    我正在研究多代理系统 例如Robocup soccerrSim2d在 Gnu linux 上 我的 distb 是 Ubuntu 11 10 内核 3 2 gcc 4 6 我安装了librcsc http sourceforge jp pr
  • Spring中依赖资源发生变化时重新加载类

    您知道 Eclipse 如何在更新 Tomcat 所依赖的资源文件 例如 spring 上下文文件 时自动重新加载在 Tomcat 中运行的类 这样您就不必重新启动 Tomcat 了 如何使类依赖于资源文件 以便 Eclipse 在资源文件
  • 比较 2 个 Dictionary 实例

    我想比较两个的内容Dictionary
  • 从github下载最新代码到Android Studio

    How to sync我当地的安卓工作室项目上有最新的代码github 我想下载所有最新的更改但我不希望我的本地更改被覆盖 如果存在冲突 它应该要求我解决这些特定文件 有办法实现这一点吗 我想下载所有最新的更改 但我不想要我的本地 更改被覆
  • `forSome { val `? 的示例

    Scala 语言规范指定的语法存在主义类型 https scala lang org files archive spec 2 13 03 types html existential types as Type InfixType Exi
  • Blazor 格式化数字的输入类型

    有人知道如何将数字类型格式化为 100 10 吗 目前 如果该值为 100 10 它将显示为 100 1 尝试了 bind value format with C2 0 0 我是 Blazor 的新手 所以如果有人能指出我正确的方向 我将不
  • 为什么这个流不返回任何元素?

    我尝试将以下代码编写为流 AbstractDevice myDevice null for AbstractDevice device session getWorkplace getDevices if device getPluginc
  • R Shiny:从模块内更改选项卡

    我有一个带有多个选项卡的闪亮应用程序 我希望选项卡内有操作按钮 允许用户切换选项卡 我找到了以下页面 https www titanwolf org Network q e6b187b8 6cad 4ece ad16 7ec73ed2f75