使用 insertUI 方法创建不同的闪亮小部件

2024-07-04

我有下面的闪亮应用程序,用户可以在数据框中选择一个或多个列名称。

name<-c("John","Jack","Bill")
value1<-c(2,4,6)
add<-c("SDF","GHK","FGH")
value2<-c(3,4,5)
dt<-data.frame(name,value1,add,value2)

然后对于每一个选择,他都会做出相对的pickerInput()可能会显示在下面。也许我可以用if对于每种情况,但问题是我的真实数据集可能要大得多,并且每次都有不同的列名称,所以我正在寻找一种方法来立即连接pickerInput()创建亲属时选择的名称pickerInput()其中将包括列值。例如,如果有人选择所有 4 个列名称 4pickerInput()应使用相对列名称作为标签来创建。

我的方法是insertUI方法,但我必须找到一种方法来创建每次都有不同选择和标签的小部件,并在取消选择第一个的相对值时将其删除pickerInput().

library(shiny)
library(shinyWidgets)
library(DT)
# ui object
ui <- fluidPage(
    titlePanel(p("Spatial app", style = "color:#3474A7")),
    sidebarLayout(
        sidebarPanel(
            pickerInput(
                inputId = "p1",
                label = "Select Column headers",
                choices = colnames( dt),
                multiple = TRUE,
                options = list(`actions-box` = TRUE)
            )

            
        ),
        
        mainPanel(
        )
    )
)

# server()
server <- function(input, output) {
    
    observeEvent(input$p1, {
        insertUI(
            selector = "#p1",
            where = "afterEnd",
            ui = pickerInput(
                inputId = #The colname of selected column
                    ,
                label = #The colname of selected column
                    ,
                choices = #all rows of selected column
                    ,
                multiple = TRUE,
                options = list(`actions-box` = TRUE)
            )
        )
    })

    
    
    
}

# shinyApp()
shinyApp(ui = ui, server = server)

我真的不喜欢使用lapply创建闪亮的输入元素,因为当您添加元素时,现有(选定)输入的输入 UI 会被覆盖,因此所有内容都会设置回默认值,并且之前为这些输入选择的值会丢失。

您可以配对insertUI with removeUI和一个变量来跟踪先前选择的列。然后您可以动态添加/删除 UI 元素并保持其他输入不变。

library(shiny)
library(shinyWidgets)
library(DT)

name<-c("John","Jack","Bill")
value1<-c(2,4,6)
add<-c("SDF","GHK","FGH")
value2<-c(3,4,5)
dt<-data.frame(name,value1,add,value2)

# ui object
ui <- fluidPage(
  titlePanel(p("Spatial app", style = "color:#3474A7")),
  sidebarLayout(
    sidebarPanel(
      pickerInput(
        inputId = "p1",
        label = "Select Column headers",
        choices = colnames( dt),
        multiple = TRUE,
        options = list(`actions-box` = TRUE)
      ),
      tags$div(id = "add_ui_here")
      
      
    ),
    
    mainPanel(
    )
  )
)

# server()
server <- function(input, output) {
  
  # store currently selected columns
  selected_columns <- c()
  
  observeEvent(input$p1, {
    
    # determine pickerInputs to remove
    input_remove <- !selected_columns %in% input$p1
    input_remove <- selected_columns[input_remove]
    
    # remove inputs
    if (!is.null(input_remove) && length(input_remove) > 0) {
      for (input_element in input_remove) {
        removeUI(selector = paste0("#", input_element, "_remove_id"))
      }
    }
    
    # determine pickerInputs to add
    input_add <- !input$p1 %in% selected_columns
    input_add <- input$p1[input_add]
    
    # add inputs
    if (length(input_add) > 0) {
      for (input_element in input_add) {
        insertUI(
          selector = "#add_ui_here",
          where = "afterEnd",
          ui = tags$div(id = paste0(input_element, "_remove_id"),
                        pickerInput(
                          inputId = input_element
                          ,
                          label = input_element
                          ,
                          choices = dt[, input_element]
                          ,
                          multiple = TRUE,
                          options = list(`actions-box` = TRUE)
                        ))
        )
      }
    }
    
    # update the currently stored column variable
    selected_columns <<- input$p1
  },
  ignoreNULL = FALSE)
  
  
  
  
}

# shinyApp()
shinyApp(ui = ui, server = server)

我已经包裹好插入的pickerInputs in a div,因此更容易删除它们。另外,你需要设置ignoreNULL = FALSE对于观察者来说,如果所有元素都被取消选择,它也会被触发。

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

使用 insertUI 方法创建不同的闪亮小部件 的相关文章

  • 创建“缺失的对象”(又名:“空符号”、“空对象”)/形式操作所需的/

    如何在R中创建一个 空对象 编辑 我不知道如何正确地调用这个 东西 所以我称之为 空对象 其他 空符号 零长度符号 缺失对象 也可能被使用 编辑2 最后 我倾向于将 缺失的符号对象 定为 事物 的名称 J Chambers 似乎也在他 20
  • 可以在点阵图和 ggplot2 图中使用 Polygon() 或等效函数吗?

    是否可以注释lattice or ggplot2 包含使用以下命令创建的元素的图形polygon 或使用类似功能创建的元素 graphics图书馆 除了网上发布的和 Deepayan Sarkar 书中印刷的简单图表示例之外 我对这两个库都
  • 如何在 R 中将 mutate_at() 与两组变量一起使用

    使用 dplyr 我想将一列除以另一列 其中两列具有相似的模式 我有以下数据框 My data data frame var a 101 110 var b 201 210 number a 1 10 number b 21 30 我想创建
  • R Markdown 水平规则也适用于 LaTeX pdf?

    我知道 是 Pandoc 的 Markdown 水平线 这条水平线在 HTML 上看起来不错 但如果我将 Markdown 编织成 pdf 则水平线仅占 pdf 宽度的一半 并且居中 这种组合只会让水平尺看起来很丑 如何在 R Markdo
  • R 中是否有具有超过 3 个参数预测变量的 loess 实现或达到类似效果的技巧?

    召集所有专家局部回归 and or R 我遇到了标准的限制loess函数于R并希望您有一些建议 目前的实施情况仅支持 1 4 个预测器 让我列出我们的应用场景来说明为什么一旦我们要使用这很容易成为问题全局拟合参数协变量 本质上 我们有一个空
  • 带有实心点符号和图例的绘图函数

    我想用不同的颜色和点样式绘制两个函数并带有相应的图例 简单的R 我有几个问题 我在用pch 21 and pch 22 我的理解是它们是 填充 符号 它们确实按照图例中的预期填充 但在图表本身上却显得空心 怎么了 我可以在不手动指定网格的情
  • pmatch 函数的属性

    我不明白内置函数的行为pmatch 部分字符串匹配 描述提供了以下示例 pmatch m c mean median mode returns NA instead of 1 2 3 但使用 pmatch m mean returns 1
  • 如何在R闪亮中使用plotly

    我正在尝试为使用闪亮生成的输出添加图表 我收到图形生成错误 有人可以看一下并提供帮助吗 条形图参数是根据计算生成的基于计算的输出 server output graph lt renderPlotly plotly x c as numer
  • gc() 和 rm() 有什么区别

    我定期使用调用来清理 R 中的内存rm list ls 我需要调用垃圾收集器吗gc 在那之后 这2个函数有什么区别 做gc call rm 对于某些变量 首先 需要注意的是 两者有很大不同gc不删除any您仍在使用的变量 它只会为您不再有权
  • 在 data.table 中添加缺失值的行

    我的问题在某种程度上与在 data frame 中添加缺失值行的最快方法 https stackoverflow com questions 10438969 fastest way to add rows for missing valu
  • 从 R 中的 CSV 文件读取“...”中定义的函数输入值

    假设我有一个 R 函数 例如foo以下 该函数有 4 个固定参数 以及定义在中的任意数量的任意参数 所有输入值foo参数存储在THIS https github com izeh i blob master j csvCSV 文件 在下面的
  • 显示大于或等号

    我有一个这样生成的图 ggplot dt 2 aes x AgeGroup y Prevalence geom errorbar aes ymin lower ymax upper colour black width 2 geom poi
  • 调整闪亮代码中计算两点之间距离的方式

    下面的闪亮代码使用以下命令生成两点之间的路线googleway功能 请注意 此外 还计算了两点之间的距离 但这是欧氏距离 而不是使用googleway功能 计算距离的正确方法是执行以下操作 test lt google directions
  • cockplot:调用plot_grid后提取子图

    我在用plot grid安排两个图 library ggplot2 library cowplot d data frame x rnorm 100 y rnorm 100 g sample c a b 100 replace T p1 g
  • 计算 r 中的相对 RMSE

    为了获得预测模型和真实值的相对 RMSE 我使用了代码 ratio lt prediction1 ISEtrain rRMSE1 lt sqrt mean 1 ratio 2 但我失败了 输出为 1 Inf 我的代码有什么问题吗 谢谢 你正
  • gsub() 中超过 9 个反向引用

    如何使用超过 9 个反向引用的 gsub 我希望下面示例中的输出为 e g i j o gt test lt abcdefghijklmnop gt gsub w w w w w w w w w w w w w w w w 5 7 9 10
  • 使用单独的线型绘制 ggplot2 中的缺失值

    我正在使用 ggplot2 创建线图 但缺少用 NaN 表示的数据 我的线图当前没有在缺失值之间添加任何线 但是 我想用虚线连接缺失的数据 而所有已知的数据用实线连接 这是我当前绘图的代码 其中包含我的数据框的一小部分和下面的绘图图像 ma
  • 在 docker 文件中安装私有 R 包

    我第一次尝试使用 Docker 和 ShinyProxy 在这个过程的一开始我遇到了很多困难 我开发了一些在本地运行良好的闪亮应用程序 我正在考虑将它们部署在我网站的一些文章中 这些闪亮的应用程序使用了 2 个我自己编码的包 它们位于我的计
  • 查找数据框中前 n 行的总和

    我想找到前面的总和n数据框中的行 例如 id 1 10 vals c 4 7 2 9 7 0 4 6 1 8 test data frame id vals So for n 3 我想将下一列计算为 test sum c NA NA 13
  • 使用深度名称向量作为索引替换嵌套列表

    采取一个简单的嵌套列表L L lt list lev1 list lev2 c bit1 bit2 other list yep 1 L lev1 lev1 lev2 1 bit1 bit2 other other yep 1 1 一个向量

随机推荐

  • iOS 7 AVPlayer AVPlayerItem 持续时间在 iOS 7 中不正确

    我的应用程序中有以下代码 NSURL url NSURL fileURLWithPath self DocDir stringByAppendingPathComponent self FileName isDirectory NO sel
  • 构建失败:程序类型已存在:com.facebook.ads.Ad

    我尝试在 Android Studio 中构建一个模块 它似乎可以在设备上运行 但是当我尝试构建 APK 时 出现错误 Program type already present com facebook ads Ad 这是完整的日志 org
  • 界面生成器中 UIView 的边框颜色不起作用?

    我正在尝试通过 IB 设置视图的图层属性 除了边框的颜色之外 一切正常 属性layer borderColor 我记得一年前遇到过这个问题 最终我以编程方式解决了这个问题 而且 我仍然可以以编程方式执行此操作 但我很好奇为什么layer b
  • TypeScript .d.ts 语法 - 导出和声明

    我需要帮助尝试了解创建 d ts 文件的正确方法 让我困惑的是有些人使用这种语法 lib a d ts namespace My Foo Bar interface IFoo interface IBar vs lib b d ts dec
  • laravel 5 vue.js csrf 令牌

    我已经花了一段时间让这个 csrf 令牌与 vue js 示例一起使用 但它一直说我没有令牌 我尝试过各种变化 底部 不是头部 而是身体末端之前 html div section conten div
  • 版本升级后异常

    使用 Optaplanner v7 11 0 Final 的项目上出现分数持久性问题 我升级到最新版本 v7 25 0 Final 但出现以下异常 The externalObject Etat super DbObject id 11 l
  • 分组依据,在 pandas 中

    select df id count distinct airports as num from df group by df id having count distinct airports gt 3 我正在尝试在 Python pan
  • 在 javascript/jquery 中从 JSON 中删除元素

    我在 javascript 中从 JSON 对象删除数据时遇到问题 我正在动态创建此 JSON 并且删除也将动态进行 下面是我的 JSON 和我所处的情况 brands 51 2046 53 67 64 现在 我必须从中删除 53 我正在使
  • 如何获取 PostgreSQL 中字符串中正则表达式匹配的位置?

    我有一个包含书名的表 我想选择标题与正则表达式匹配的书籍 并按标题中正则表达式匹配的位置对结果进行排序 单字搜索很容易 例如 TABLE book id title 1 The Sun 2 The Dead Sun 3 Sun Kissed
  • 检查Column中是否存在Cell值,然后获取NEXT Cell的值

    检查列中是否存在单元格值后 我需要获取匹配单元格旁边的单元格的值 例如 我检查中的值是否cell A1存在于column B 并假设它匹配B5 那么我想要的值是cell C5 为了解决前半个问题 我这样做了 IF ISERROR MATCH
  • 如何构建我的 PHP 项目?

    我即将开始另一个大型 PHP 项目 这次 我打算让项目文件夹变得整洁 所以我有几个关于保持我的项目干净和干燥的问题 如何区分 PHP 源文件和浏览器应访问的 PHP 文件 换句话说 我如何清楚哪些 PHP 文件提供输出 哪些提供函数或类定义
  • 在 Python 中访问 Firefox 3 cookie

    我正在尝试制作一个 python 脚本 该脚本将在 Firefox 中使用 cookie 访问网站 如果 cookielib MozillaCookieJar 支持 Firefox 3 它就会工作 有没有办法在 python 中访问 Fir
  • GO 语句破坏了 .NET 中的 SQL 执行

    我有一个非常简单的 C 命令 shell 应用程序 它执行 SQL Server 生成的 SQL 脚本来编写模式和数据脚本 它在 GO 声明中爆炸了 错误信息 GO 附近的语法不正确 这是完整的 sql 脚本 Object Table gy
  • android finish() 方法不会从内存中清除应用程序

    我有一个活动 我调用 finish 方法 但该活动没有从内存中清除 调用 finish 后 我看到 onDestroy 方法已成功执行 并且我清除了其中的所有变量和内容 应该从内存中清除它还是android的工作方式 据我了解 活动的生命周
  • 如何在MIPS汇编编程中打印数字的前几位? [复制]

    这个问题在这里已经有答案了 我是 MIPS Assembly 编程的初学者 我想知道在读入数字后如何打印数字的第一个数字 data number 1 word text read in first number li v0 5 syscal
  • 为什么Scala 支持影子变量? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 与 Hive 的连接

    我安装了 Hortonworks Hive ODBC 驱动程序并在数据源中创建了连接 我测试了它并且成功了 我安装了PyODBC并编写了以下代码 import os sys pyodbc con pyodbc connect DSN MyC
  • Python Selenium Webdriver - 代理身份验证

    我想将 Selenium Webdriver 与需要用户身份验证的代理一起使用 这可能吗 这就是我到目前为止所拥有的 但我不知道在哪里放置凭据 user pass proxy port from selenium import webdri
  • .NET 中是否有任何集合可以防止空条目?

    我特别考虑的是履行一套合同的集合 但我认为这个问题可以适用于任何类型 NET 框架中是否存在可以防止空条目的集合 我想要的具体行为是这样的 var set new HashSet bool added set Add null Consol
  • 使用 insertUI 方法创建不同的闪亮小部件

    我有下面的闪亮应用程序 用户可以在数据框中选择一个或多个列名称 name lt c John Jack Bill value1 lt c 2 4 6 add lt c SDF GHK FGH value2 lt c 3 4 5 dt lt