insertUI 中的 R 闪亮动态 UI

2024-03-09

我有一个闪亮的应用程序,我想使用操作按钮添加 UI 元素,然后让插入的 ui 成为动态的。

这是我当前的 ui 文件:

library(shiny)

shinyUI(fluidPage(
  div(id="placeholder"),
  actionButton("addLine", "Add Line")
))

和服务器文件:

library(shiny)

shinyServer(function(input, output) {
  observeEvent(input$addLine, {
    num <- input$addLine
    id <- paste0("ind", num)
    insertUI(
      selector="#placeholder",
      where="beforeBegin",
      ui={
         fluidRow(column(3, selectInput(paste0("selected", id), label=NULL, choices=c("choice1", "choice2"))))
      })
  })

})

If choice1在特定的 ui 元素中选择,我想添加一个textInput到行。如果choice2在 ui 元素中选择,我想添加一个numericInput.

虽然我通常了解如何创建响应用户输入而变化的反应值,但我不知道在这里做什么,因为我不知道如何观察尚未创建的元素并且我不知道名称的。任何帮助将不胜感激!


Code

这可以很容易地解决modules https://shiny.rstudio.com/articles/modules.html:

library(shiny)

row_ui <- function(id) {
  ns <- NS(id)
  fluidRow(
    column(3, 
           selectInput(ns("type_chooser"), 
                       label = "Choose Type:", 
                       choices = c("text", "numeric"))
    ),
    column(9,
           uiOutput(ns("ui_placeholder"))
    )
  )
} 

row_server <- function(input, output, session) {
  return_value <- reactive({input$inner_element})
  ns <- session$ns
  output$ui_placeholder <- renderUI({
    type <- req(input$type_chooser)
    if(type == "text") {
      textInput(ns("inner_element"), "Text:")
    } else if (type == "numeric") {
      numericInput(ns("inner_element"), "Value:", 0)
    }
  })

  ## if we later want to do some more sophisticated logic
  ## we can add reactives to this list
  list(return_value = return_value) 
}

ui <- fluidPage(  
  div(id="placeholder"),
  actionButton("addLine", "Add Line"),
  verbatimTextOutput("out")
)

server <- function(input, output, session) {
  handler <- reactiveVal(list())
  observeEvent(input$addLine, {
    new_id <- paste("row", input$addLine, sep = "_")
    insertUI(
      selector = "#placeholder",
      where = "beforeBegin",
      ui = row_ui(new_id)
    )
    handler_list <- isolate(handler())
    new_handler <- callModule(row_server, new_id)
    handler_list <- c(handler_list, new_handler)
    names(handler_list)[length(handler_list)] <- new_id
    handler(handler_list)
  })

  output$out <- renderPrint({
    lapply(handler(), function(handle) {
      handle()
    })
  })
}

shinyApp(ui, server)

解释

模块是一段模块化的代码,您可以根据需要多次重用它,而不必担心唯一的名称,因为模块在namespaces.

一个模块由 2 部分组成:

  1. A UI功能
  2. A server功能

它们与正常人非常相似UI and server函数,需要记住一些事项:

  • namespacing:在服务器内,您可以访问来自UI就像你通常做的那样,例如input$type_chooser。然而,在UI部分,你必须namespace你的元素,通过使用NS,它返回一个函数,您可以在代码的其余部分方便地使用该函数。为此UI函数接受一个参数id它可以被视为该模块的任何实例的(唯一)命名空间。元素ids在模块内必须是唯一的,并且由于命名空间,它们在整个应用程序中也将是唯一的,即使您使用模块的多个实例。
  • UI: 身为你的UI是一个函数,它只有one返回值,您必须将元素包装在tagList如果你想返回多个元素(这里不需要)。
  • server: 你需要session参数,否则是可选的。如果您希望模块与主应用程序进行通信,则可以传入一个(反应性)参数,您可以像往常一样在模块中使用该参数。同样,如果您希望主应用程序使用模块中的某些值,您应该返回反应,如代码中所示。如果你想创造UI服务器函数中的元素,您还需要对它们进行命名空间,并且可以通过以下方式访问命名空间函数session$ns如图所示。
  • usage:要使用您的模块,请插入UI通过使用唯一的调用函数来将其作为主应用程序的一部分id。然后你必须打电话callModule为了使服务器逻辑正常工作,您可以在其中传递相同的内容id。该调用的返回值是returnValue模块服务器功能的一部分,并且可以在主应用程序中使用模块内的值。

简而言之,这解释了模块。可以找到一个非常好的教程,它更详细和完整地解释了模块here. https://shiny.rstudio.com/articles/modules.html

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

insertUI 中的 R 闪亮动态 UI 的相关文章

  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 当每个记录都是一个段落并且某些记录有 4 个字段而其他记录有 6 个字段时,如何将文本文件读入 R

    如何读取文本文件 其中每条记录都是一个段落 每个换行符表示单独的字段 复杂的是 有些记录有 4 行 有些记录有 6 行 当字段数量的差异为 1 时 DWin 解决了我的问题 但当字段数量差异为 2 时 一切都崩溃了 你可以有一个在这里看看他
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 如何从 jQuery 对象中删除元素?

    Code div d1 div div d2 div 我用过j add 添加元素到j 但是我该如何删除 d1 from j j remove 不起作用 因为它删除了 d1 and j length仍然是2 谢谢大家 div d1 div
  • 从IP地址获取地理位置[重复]

    这个问题在这里已经有答案了 可能的重复 在 Java 中获取地理位置的最佳方法 https stackoverflow com questions 1415851 best way to get geo location in java j
  • 避免 .NET Native 错误

    我去年 兼职 将现有 且成功的 Windows 8 1 应用程序迁移到 Windows 10 UWP 现在 就在将其发布到商店之前 我在 发布 构建模式 触发 NET Native 下测试了该应用程序 一切似乎都有效 直到我 偶然 注意到一
  • 嵌套 Python 模块导入的最佳实践

    假设我有一个 Python 模块 main py import math from the standard Python library import my own module foo math cos bar 我还需要在 my own
  • 如何使用 Linux 命令获取可用内存的百分比? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用 Linux 命令行获取以百分比形式报告的可用内存 我用的是free命令 但这只是给我数字 并且没有百分比选项 使用free命令 free t
  • ssl.get_server_certificate 适用于具有 SNI(服务器名称指示)的站点

    我正在尝试获取 badssl com 子域的服务器证书 例如https expired badssl com https expired badssl com import ssl ssl get server certificate ex
  • 如何在SML中使用IntInf或LargeInt?

    我想通过此链接中的 pow 等函数在 SML 中执行大整数计算 http www standardml org Basis int inf html IntInf STR SPEC http www standardml org Basis
  • 检测图像中线条的起点和终点(numpy 数组)

    我有一个像下面这样的图像 我想要的是获取每个线段的起点和终点的坐标 实际上我的想法是考虑这样一个事实 每个极值点应该只有一个属于其邻域中的线段的点 而所有其他点应该至少有 2 个 不幸的是 该线的厚度不等于一个像素 因此这一推理不成立 这是
  • 如何使用实体关系不直接的休眠标准连接多个表?

    我有三个实体 那些是 Entity public class Organization Id private long id Column private String name Entity public class Book Id pr
  • 活跃用户 SQL 查询

    我正在尝试绘制网络应用程序中的活跃用户图表 我的数据库由两个主表组成 user and task task has a user id 我的定义活跃用户 is 在给定结束日期后两周内创建了 2 个以上任务的用户 因此 我需要一个 SQL 查
  • 在ocaml中编写多行函数

    我无法理解如何在 ocaml 中编写函数 因为我只编写了不需要用 分隔的多行的递归函数 我正在尝试创建一个函数 给定一个整数 n 返回一个充满零且对角线上只有一个的矩阵 因此大小为 n 的单位矩阵 我是函数式编程和 ocaml 的新手 所以
  • Flutter - 在 Android 上访问隐藏方法 Lsun/misc/Unsafe 错误

    我收到 Flutter 项目的错误 我将开始一一停用插件 并希望找出其中之一是否导致了问题 在那之前 我会将其留在这里 以防有人提出建议 Accessing hidden method Lsun misc Unsafe gt putObje
  • PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签

    我正在 PowerShell 中创建一个新对象 使用哈希表来设置属性值 然后我想使用 ConvertTo XML 方法将对象导出为 XML 格式 hash Processor Intel Disk 500GB Server ABC Seri
  • 如何使用 opencv python 将黑色更改为红色

    你怎么能用Python做到这一点 我在这条线上遇到了问题 img rgb Set mask cv2 Scalar 0 0 255 这是代码 import numpy as np import imutils import cv2 img r
  • 在 C 中将匿名结构作为参数传递

    我有以下 c 行 为了可读性而添加回车符 它们不在代码中 define i2c write slave addr reg addr len data ptr twi master write MPU TWI addr reg addr ad
  • 如何移动文件?

    我正在针对 SourceForge SVN 存储库使用 TortoiseSVN 我想将文件从一个文件夹移动到另一个文件夹以维护其修订历史记录 这可能吗 如果是这样 你会怎么做 我当前的策略是将文件复制到新文件夹中并将其签入 然后从当前文件夹
  • 优化 S3 下载大量小文件

    我目前使用转账管理器 https docs aws amazon com AWSJavaSDK latest javadoc com amazonaws services s3 transfer TransferManager html从
  • AJAX 将不带表单的 ValidateAntiForgeryToken 发布到 MVC 操作方法

    我一直在寻找如何在 SO 上执行此操作的示例 据我所知 我已经尝试了所有我能找到的示例 但到目前为止没有成功 我尝试根据我的场景更改一些实现 但到目前为止也失败了 我的页面上有这个 layout cshtml 所以我总是有一个可用的令牌
  • Android 设计支持库可扩展浮动操作按钮 (FAB) 菜单

    现在Android设计支持库已经出来了 有谁知道如何用它实现扩展的Fab菜单 就像Inbox App上的fab一样 应该看起来像这样 获得了一种更好的方法来实现动画 FAB 菜单 而无需使用任何库或为动画编写大量 xml 代码 希望这对将来
  • insertUI 中的 R 闪亮动态 UI

    我有一个闪亮的应用程序 我想使用操作按钮添加 UI 元素 然后让插入的 ui 成为动态的 这是我当前的 ui 文件 library shiny shinyUI fluidPage div id placeholder actionButto