首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Shiny中基于select输入调用不同的模块?

在Shiny中,可以使用selectInput函数创建一个下拉菜单,然后根据用户选择的选项来调用不同的模块。以下是一个示例代码:

代码语言:txt
复制
library(shiny)

ui <- fluidPage(
  selectInput("module", "选择模块", choices = c("模块A", "模块B")),
  uiOutput("moduleUI"),
  actionButton("runModule", "运行模块")
)

server <- function(input, output, session) {
  output$moduleUI <- renderUI({
    if (input$module == "模块A") {
      # 创建模块A的UI
      fluidRow(
        column(6, textInput("input1", "输入1")),
        column(6, textInput("input2", "输入2"))
      )
    } else if (input$module == "模块B") {
      # 创建模块B的UI
      fluidRow(
        column(6, numericInput("input3", "输入3", value = 0)),
        column(6, numericInput("input4", "输入4", value = 0))
      )
    }
  })
  
  observeEvent(input$runModule, {
    if (input$module == "模块A") {
      # 调用模块A的逻辑
      output$moduleOutput <- renderText({
        # 获取输入值并进行处理
        input1 <- input$input1
        input2 <- input$input2
        # 返回处理结果
        paste("模块A的输出:", input1, input2)
      })
    } else if (input$module == "模块B") {
      # 调用模块B的逻辑
      output$moduleOutput <- renderText({
        # 获取输入值并进行处理
        input3 <- input$input3
        input4 <- input$input4
        # 返回处理结果
        paste("模块B的输出:", input3 + input4)
      })
    }
  })
}

shinyApp(ui, server)

在上述代码中,我们首先使用selectInput函数创建了一个下拉菜单,供用户选择模块。然后使用renderUI函数根据用户选择的模块动态生成相应的输入界面。在observeEvent中,根据用户选择的模块调用不同的逻辑,并将处理结果输出到output$moduleOutput中。

这个示例中只是简单地展示了如何在Shiny中基于select输入调用不同的模块,实际应用中可以根据需求进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「R」Shiny 教程笔记

整理之前在知识星球打卡汇总 Shiny 笔记,作为速学、速查使用和分享。 基于 https://shiny.rstudio.com/tutorial/ 视频而非文字教程写笔记。...每个输入组件都有唯一标识符,需要展示标签名作为参数,其他一些参数则应不同组件提供不同功能而不同。每个输出组件也有它唯一标识符。...3 个步骤要点: 要展示对象设置为 output 元素, output$hist。 通过 render* 函数生成要展示元素。 通过 input$xx 使用来自 UI 输入。 ? ? ? ?...p8:响应值(reactive values) 响应值就是 Shiny 数据流,input 是响应值列表,这些值展示了当前输入各自状态。注意⚠️:响应值只能在对应设定好响应环境中使用!...p10:使用 reactive 表达式模块Shiny 回顾上一部分学习,当多处使用同一随机数据时,不同地方数据将变得不一致。

6.6K51

「R」Shiny:用户界面(三)布局

在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面对它们进行排列,以达到比较好展示效果。这正是布局函数工作,布局函数提供了一个应用高层次可视化结构。...这篇文章内容聚焦于 fluidPage() 函数,它提供了大多数应用使用布局风格。在未来文章我们将讨论布局函数家族其他成员,仪表盘、对话框。 依旧先载入 Shiny。...library(shiny) 概览 Shiny 应用布局由层次函数调用创建,其中 R 层次结构与输出层次结构匹配。...多行页面 从实现上讲,sidebarLayout() 是基于一个灵活多行布局之上构建。这个多行页面布局可以用于创建视觉上更加复杂应用。...多行页面结构 细心读者可能注意到了每一行总宽是 12,这是 Shiny 设定,我们可以在此基础上使用不同宽度组合。

3.6K10

Shinyforms | 用 Shiny 写一个信息收集表

现在,我们可以通过 Shiny 调用 formUI() 和 formServer() 创建表单: ui <- fluidPage( formUI(formInfo))server <- function...表单仅仅是一个“模块”,你可以将其插入任何所需 Shiny App 。每次提交响应时,它将被另存为文件。...当前功能 •表单结果保存到本地文件;•支持必填字段和可选字段(在问题列表中使用 mandatory 参数);•仅用一行代码即可为 Shiny UI 和 server 添加表单;•可以在同一 App 包含多种不同形式...如果你想查看所有收集结果,则必须输入密码以验证您是管理员 (在表单信息列表中使用 password 参数可设置密码);•支持更复杂输入验证,当字段不满足某些条件时,会给出错误提示消息(在表单信息列表中使用...再举一个例子 此示例与上一个示例相似,但进一步说明了其他一些功能。它显示了如何在一个应用程序插入两个表格,以及如何使用管理员查看功能。

3.8K10

R︱shiny实现交互式界面布置与搭建(案例讲解+学习笔记)

其中人物关系是这样定义: 比如A和B是friend关系,那么: 输入数据Former Person就是A;Later Person就是B,Label就是friend。...ui.R:搭框架,控件; server.R:每个控件背后算法代码; global.R:server.R,万一有很长代码与调用很多其他packages就可以用global写一个函数集合,然后统一在...譬如dist 要调用ui里面的内容的话就是Input$obs就是上面sliderInput里面输入内容。...但是当如果输入没有变化时候, 这种重复数据读取会极大延迟反应, 浪费资源。 基于这种考虑, 我们使用reactive关键词重写了数据读取模块。...reactive像一个带cache模块, 并且当reactive检查到数据输入没有任何变化, 那么输出也不会有变化时候, reactive就会使用缓存数据,避免了重复运算, 加速了反应。

6.4K20

单细胞分析工具||ShinyCell交互式展示单细胞数据

Ouyang团队开发单细胞分析工具包,实现基于shiny网页交互式展示单细胞数据;于2021年3月发表于Bioinformatics杂志。...文章中介绍,ShinyCell相比同类工具具有多个优势,例如直观side-by-side降维可视化方式,hdf5格式保存表达矩阵从而读取快速,支持pdf/png保存图片,支持多种常见单细胞数据类型等...展示meta title,level name,colors fROW表示 legend行数,default 表示是否为默认展示两种cell info,grp表示是否为分组类型 (2)生成shiny...模块介绍 (1)完成上述步骤后即可在本地生成一个shiny网页,下面结合作者分享示例http://shinycell1.ddnetbio.com/介绍其内容; 在每个模块,均有3个Toggle选项支持筛选细胞...进阶用法 4.1 meta config调整 如上介绍,生成shiny网页第一步是根据单细胞数据meta信息生成相应config文件,用以设置模块可视化细节。

91960

十个超级好用R语言编程技巧,一般人绝不知道!

1. switch函数 在if语句基于其他变量值来选定某个值时,switch可以很方便地缩短if语句。这个技巧在编程需要根据之前抉择加载一个不同数据集时非常有用。...", "rabbit" ="rabbitdata.csv")) 当需要根据一个或多个输入菜单选择在Shiny应用程序中加载不同数据集甚至环境文件时,这个技巧非常有用。...想要了解更多方便好用快捷键,可以在RStudio输入Atl+Shift+K查看。...由于flexdashboard包基于RMarkdown进行操作,它允许把所有应用程序放在一个Rmd文件,而不必像shinydashboard那样把程序分成独立服务器和UI(User Interface...R ShinyHTML标签(以在Shiny应用程序播放音频为例) R Shiny中有110种HTML标签,可以为各种各样HTML命令,格式化,提供快捷方式。

2.3K10

「R」Shiny:响应式编程(三)响应表达式

响应图 让我们开始绘制这个应用响应图。**当然输入发生改变时,Shiny 可以非常聪明地自动更新结果;但 Shiny 无法聪明到选择性运行更新输出代码。...但 Shiny 会把它们看作一个整体,只要更新输入任意一个,x1 和 x2 都要更新。 因此,响应图如下: ? 我们注意到这个图非常稠密:几乎每个输入都跟每个输出直接连接到了一起。...简化响应图 在下面的 server 函数我们重构已有的代码为 2 个新响应表达式 x1 和 x2。要创建一个响应表达式,我们调用 reactive() 并将结果赋值给一个变量。...模块可以抽取重复代码以便于重新利用,它是一种非常强大技术,当我们在 Shiny 需要复制粘贴代码时,我们就应该考虑进行模块化。内容我们会在后面文章中介绍。 ?...模块响应图 为什么我们需要响应表达式 因为通过创建变量和函数方式减少重复在 Shiny 是不工作

1.5K40

Python交互式数据分析报告框架:Dash

,但是这些都是基于Web交互视图库,而非Shiny那种能将文档、表格、视图整合在一起交互式数据分析报告框架。...这个应用每个设计元素,尺寸、位置、颜色及字体,都可以自定义。Dash应用是基于Web构建与发布,所以完全支持CSS。下面是一个采用了高盛报告风格、可高度定制及交互Dash报告。 ?...Dash会在UI为该函数图形、表格及文本等元素返回新属性。 下面的例子简要展示了文本框与图形互动更新,此代码基于当前选定点,在PandasDataFrame筛选数据。 ?...:https://github.com/plotly/plotly.js 现有技术 Dash是Python生态系统新兵,但支撑它理念与驱动力已在不同语言和应用存续了数十年。...Dash和Shiny很像,但是Dash不会成为Shiny复制品,毕竟Python和R之间习语与理念非常不同,所使用语法也不同。 ?

6.9K92

基于R语言shiny网页工具开发基础系列-03

上面是shiny团队稿件 l3-更复杂页面部件 shiny 小部件提供了一个用户给app传送信息方式 为什么加上控制小工具 上节已经学会在用户界面放置一些简单元素,但显示更复杂内容需要用到小部件...一个label:这个标签将和app小部件一起出现,应该是字符串,但是也可以是空"" 此例,name参数是"action", 标签是 "Action" actionButton("action"..., label = "Action") 其他参数因小部件而异,具体要看小部件执行工作所需内容 他们包括初始值,范围和增量 也可以通过查看函数帮助页面来获取其他参数,?...app 访问这个网站,图库展示了每个小部件,并演示了每个小部件值根据你输入而变化 选择一个小工具,并点击See Code。...图库会跳转到一个描述这个小工具示例app,只需要复制其中代码到自己app即可。

2.5K20

「R」Shiny:响应式编程(一)server 函数

在前面的文章,我们介绍了如何创建用户界面。现在我们将内容转向对于 Shiny 服务端讨论,它会让我们在运行时中使用R代码让用户界面栩栩生。 在 Shiny ,我们使用响应式编程表达服务逻辑。...响应式编程是一种优雅且强大编程范式,但由于它与我们编写脚本范式不同,因此一开始读者可能会感到困惑。响应式编程核心思想是指定依赖关系图,以便当输入发生更改时,所有相关输出都会自动更新。...为了达到这样目的,Shiny 每次启动一个新会话,都会调用一次 server() 函数。就像其他任何 R 函数一样,每当 server 函数被调用时,它都会创建一个新独立局部环境。...input 如果在内部被修改就不能反应用户在浏览器输入,从而造成了不一致性,这是 Shiny 所不允许。...我们必须通过像 renderText() 或 reactive() 这样函数创建响应式语境才能从一个输入控件读入数据。

2.5K10

基于R语言shiny网页工具开发基础系列-06

上面是shiny团队稿件 L6-反应表达式 用反应表达式,快速构建,模块化app ⚠️此篇线上数据可能有时无法顺利抓取,要多试几次 使用反应表达式 用户会赞叹快速app,但是你app有大量运算影响速度了该怎么办呢...shiny会重建对象,一旦: 对象render*函数,input值改变了 对象render*函数,反应表达式过期了 将反应表达式作为一条链连接,把input值和output对象连了起来。...: 上述代码adjust部分可以不用在renderPlot 参考答案: Adjust在renderPlot内部被调用。...回顾 你能加快你app,使用反应表达式模块化代码 一个反应表达式从input取值或者来自其他反应表达式,并返回新值 反应表达式会保存他们结果,只有在输入改变时重新运算 构建反应表达式使用reactive...({ }) 调用反应表达式可以用表达式名字加圆括号形式 只在其他反应表达式内部或者render*函数内部调用反应表达式 我练习答案 # Load packages ---- library(shiny

3.9K20

Shiny 基础

shiny introduction Shiny 是一个可以从R中方便地构建交互式WEB应用R包 作为一个实例展示, Shiny 内置了一些例子,我们可以通过运行 runExample() 来探索...image-20201103184214756 Shiny App结构 Shiny apps是被包含在名为app.R脚本,如果这个脚本在一个目录下(比如newdir/),那么可以通过runApp(..."newdir")来运行 app.R有3个部分: UI对象(user interface),控制这APP布局和外观 server function包含计算机创建APP所需指令 调用shinyApp命令...shiny render*函数输出,不同render*函数对应不同类型输出: ?...image-20201107232102417基于这些规律,在放置代码时候可以遵循以下原则: source代码,load包,载入数据都可以放在server函数之外,只需要运行一次 将定义用户特定对象代码放到

2.4K20

Shiny APP搭建为独立桌面可执行程序 - Deploying R shiny app as a standalone application

为了达到这个目的,最好结果是将RShiny App转换为一个独立运行exe文件,也就是一个这样桌面应用: image.png 10065741-1d8037cb4acec453.png 对,我实现了...,写死既被动,在调用npm时候总会有小小问题导致全盘失败。...和ShinyApp打包成exe 该方法基于Windows实现了打包exe,理论上可以在mac上实现打包dmg 怎么做?...3.1 添加模块 载入csv文件按钮就是一个模块(按钮本身是模块UI,读取csv文件是这个模块功能),我们运行....:mod_csv_file_ui 定义模块UI,mod_csv_file_server 定义模块功能,如果要使用这个模块只需在Shiny Appapp_ui调用前者,app_server调用后者就可以了

5K41

UCSCXenaShiny 正式见刊发表!

目前已经有上万次下载安装,统计有超过4万行代码。 ? 它既是一个 R 包,也是一个 Shiny 应用。我们以 Shiny 应用为主,这样可以将分析功能提供给无任何编程经验用户。...在线使用 我们借助Hiplot平台发布了Shiny插件,大家无需安装,打开浏览器,输入https://shiny.hiplot.com.cn/ucsc-xena-shiny/即可使用。...通用分析 该功能支持 UCSC Xena 任意符合分析要求数据集!目前有 4 个模块,分别用于 2 变量相关、多变量相关、分组比较和生存分析。支持用户上传同样格式数据进行分析! ?...诸多泛癌分析功能模块 ? 下面是一些截图: ? ? ? ? ? ? ? 大部分下载和分析数据功能都可以在R里面通过函数调用 ?...如果有任何问题,请在 GitHub issue https://github.com/openbiox/UCSCXenaShiny/issues 进行反馈。

59310

R文档沟通|Dashboards入门(4)

这是通过将 runtime: shiny 添加到标准仪表盘文档来实现,然后添加一个或多个输入控件或响应式表达式来动态驱动仪表板内组件外观。...入门指南 在仪表盘添加 Shiny 组件步骤如下: 在文档顶部 YAML 元数据添加 runtime: shiny。...在仪表盘第一列添加 {.sidebar} 属性,使其成为 Shiny 控件输入控制台(注:这一步不是必须,但这是基于 Shiny 仪表盘经典布局)。 根据需求,添加 Shiny 输入和输出。...其中,仪表盘第一列包含了 {.sidebar} 属性和两个 Shiny 输入控件;第二列包含了绘制图表 Shiny 代码。...注:文档顶部标记为 global R 代码块在全局环境中都可以被调用。这将为用户带来更好启动性能,强烈推荐大家使用。

2.4K30
领券