我有两个单选按钮A和B.当选中按钮A时,将显示两个小部件.当我们选中按钮B时,按钮A的窗口小部件被删除,我们显示按钮B的窗口小部件,如果我们再次选中按钮A,情况相同. 为了实现这一点,我使用了函数conditionalPanel(),但问题是所有这些都是同时显示的.有按钮A和按钮B元素

mod_models_ui <- function(id){ns <- NS(id); tagList(
    radioButtons(ns("radioBtn"), "", c("A" = "idA", "B" = "idB"), selected = "idA"),
    conditionalPanel(
      condition = paste0("input.", ns("radioBtn"), " == 'idA'"),
      h3("A"), textInput("text1", "Widget 1"), textInput("text2", "Widget 2")),
    conditionalPanel(
      condition = paste0("input.", ns("radioBtn"), " == 'idB'"),
      h3("B"),textInput("text3", "Widget 3"),textInput("text4", "Widget 4")))
}

mod_models_server <- function(id){moduleServer( id, function(input, output, session){ns <- session$ns
    observe({print(input$radioBtn) })}

应用程序_ui.R

app_ui <- function(request) {
  tagList(
    ...
    mod_models_ui("radioBtn"))}

APP_SERVER.R

app_server <- function(input, output, session) {
  mod_models_server("radioBtn")}

推荐答案

问题是,与通过$访问R中的元素类似,只有当对象属性是有效的变量名时,才能使用点符号(.)访问JS中的对象属性,而radioBtn-radioBtn不是,即您必须使用括号符号([]),例如condition = paste0("input['", ns("radioBtn"), "'] === 'idA'").但是,使用conditionalPanelns=参数可以更轻松地实现结果:

mod_models_ui <- function(id) {
  ns <- NS(id)
  tagList(
    radioButtons(ns("radioBtn"), "", c("A" = "idA", "B" = "idB"), selected = "idA"),
    conditionalPanel(
      condition = "input.radioBtn === 'idA'",
      h3("A"),
      textInput("text1", "Widget 1"),
      textInput("text2", "Widget 2"),
      ns = ns
    ),
    conditionalPanel(
      condition = "input.radioBtn === 'idB'",
      h3("B"),
      textInput("text3", "Widget 3"), textInput("text4", "Widget 4"),
      ns = ns
    )
  )
}

mod_models_server <- function(id) {
  moduleServer(id, function(input, output, session) {
    ns <- session$ns
    observe({
      print(input$radioBtn)
    })
  })
}

library(shiny)

ui <- fluidPage(
  mod_models_ui("radioBtn")
)

server <- function(input, output, session) {
  mod_models_server("radioBtn")
}

shinyApp(ui, server)
#> 
#> Listening on http://127.0.0.1:8788
#> [1] "idA"

R相关问答推荐

如果索引重复,聚合xts核心数据

在边界外添加注释或标题

管道末端运行功能

用相同方法得到不同函数的ROC最优截断值

我不能在docker中加载sf

将向量组合到一个数据集中,并相应地命名行

lightgbm发动机在tidymmodels中的L1正则化""

单个轮廓重叠条的单独图例

未识别时区

使用整齐的计算(curl -curl )和杂音

识别连接的子网(R-igraph)

根据列表中项目的名称合并数据框和列表

如何将一个方阵分解成没有循环的立方体

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

策略表单连接两个非常大的箭头数据集,而不会 destruct 内存使用

使用列名和r中的前缀 Select 列的CREATE函数

在R中添加要打印的垂直线

如何将两个用不同的运算符替换*的矩阵相乘

使用相对风险回归计算RR