如何访问/记住闪亮中未选中的值?

2024-05-04

我正在摆弄 R 中的闪亮应用程序。该应用程序有

  • 选择列表Input A(主要组)具有可能的值 A、B 和/或C
  • 一组复选框Input b(子群),它们是 通过选择动态填充Input A列表:chkb a 和 chkb b 代表 A,c,d 代表 B,和/或 e,f 代表 C
  • 一个数据框df与映射

它看起来是这样的:

我的问题是Input b忘记了之前未选中哪些复选框。所以 - 关于屏幕录制 - 值b列表中的每个新选择都必须再次取消选中Input A.

问:我如何更改以下代码,以便

  1. 新增列出项目来自Input A自动检查 in Input b, and
  2. 之前未经检查的值来自Input b are 记住了;至少只要对应的类别Input A没有取消选择

这是代码:

library(shiny)
df <- data.frame(
  a = rep(LETTERS[1:3], each = 2), 
  b = letters[1:6]
)

ui <- fluidPage(
  column(6, selectInput("selectinput", "Input A", levels(df$a), multiple = T)),
  column(6, checkboxGroupInput("checkinput", "Input b", NULL))
)

server <- function(input, output, session) {
  observe({
    allPossibleB <- df$b[df$a %in% input$selectinput]
    updateCheckboxGroupInput(session, 
      "checkinput", "Input b",
      choices = allPossibleB,
      selected = setdiff(allPossibleB, NULL), # <=== previously unchecked instead NULL?
      inline = TRUE
    )
  })
}

shinyApp(ui, server)

我尝试了几件事,我认为这些都不值得一提,因为我对 Shiny 和底层概念没有太多经验。也许有一种简单的方法不仅可以访问输入小部件的检查值?

预先感谢您的任何提示和帮助!


你可以使用reactiveValues()记住检查的值。

我对命名列表进行了编辑以存储复选框的信息。如果您打算选择,这是必要的input A按字母顺序排列,..

checked <- as.list(rep(T, length(df$b)))
names(checked) <- df$b

在应用程序内,您将必须使用isolate() as the input$selectinput更新速度快于input$checkinput由于某种原因,这会导致选择逻辑出现问题。所以我们只想在发生变化时进行更新input$checkinput。是的,我使用 for 循环来更新(未)检查值的列表:)。

  global <- reactiveValues(checked = checked)

  observe({
    input$checkinput
    isolate({
      if(!is.null(input$checkinput)){
        possible <- as.character(df$b[df$a %in% input$selectinput])
        for(nr in 1:length(possible)){
          global$checked[[possible[nr]]] <- (possible %in% input$checkinput)[nr]
        }
      }
    })
  })

完整的应用程序将是:

library(shiny)

df <- data.frame(
  a = rep(LETTERS[1:3], each = 2), 
  b = letters[1:6]
)

checked <- as.list(rep(T, length(df$b)))
names(checked) <- df$b


ui <- fluidPage(
  column(6, selectInput("selectinput", "Input A", levels(df$a), multiple = T)),
  column(6, checkboxGroupInput("checkinput", "Input b", NULL))
)

server <- function(input, output, session) {
  global <- reactiveValues(checked = checked)

  observe({
    input$checkinput
    isolate({
      if(!is.null(input$checkinput)){
        possible <- as.character(df$b[df$a %in% input$selectinput])
        for(nr in 1:length(possible)){
          global$checked[[possible[nr]]] <- (possible %in% input$checkinput)[nr]
        }
      }
    })
  })

  observe({
    allPossibleB <- df$b[df$a %in% input$selectinput]
    updateCheckboxGroupInput(session, 
                             "checkinput", "Input b",
                             choices = allPossibleB,
                             selected = df$b[unlist(global$checked)], # <=== previously unchecked instead NULL?
                             inline = TRUE
    )
  })
}

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

如何访问/记住闪亮中未选中的值? 的相关文章

  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 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
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • 纵向比较 R 中的值...并进行扭转

    我有许多人在多达四个时间段进行的测试结果 这是一个示例 dat lt structure list Participant ID c A A A A B B B B C C C C phase structure c 1L 2L 3L 4L
  • R:如何获取该月的周数

    我是 R 新手 我想要该日期所属月份的周数 通过使用以下代码 gt CurrentDate lt Sys Date gt Week Number lt format CurrentDate format U gt Week Number 3
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • 如何使用 tidymodels 和工作流集在同一数据集上拟合多个不同的线性模型

    我想评估同一数据集上多个 主要是 线性回归模型的性能 我想也许使用tidymodels包连同workflowsets workflow set 可能会起作用 我按照这个例子here https workflowsets tidymodels
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大

随机推荐