在闪亮页面中使用可变数量的输入字段

2023-12-10

我的问题如下:

我有一个闪亮的应用程序,它根据用户输入显示可变数量的输出元素(例如,详细信息如下:使用闪亮动态添加绘图到网页).

但是,我还想向每个输出元素添加一个输入元素,允许用户为输出指定一些修饰符(例如,让用户选择将每个元素视为绘图还是表格,但可以概括为对可变数量的输出进行任何类型的修改)。

我认为最简单的方法是向每个元素添加一个 selectInput 元素,其中包含我希望用户拥有的选择。 我的问题是,每次渲染页面时, selectInput 元素似乎都会恢复到其初始值,因此更改它们没有效果(实际上,它们确实有一个效果,但随后它们被重置,效果是恢复)。

以下代码重现了该问题(根据@skasch对上述问题的回答进行修改):

server.R

library(shiny)
max_plots <- 5

shinyServer(function(input, output) {

# Insert the right number of plot output objects into the web page
output$plots <- renderUI({
  plot_output_list <- lapply(1:input$n, function(i) {
     modifier <- paste("select",i,sep="")
     plotname <- paste("plot", i, sep="")
     plottitle <- paste("plottitle", i, sep="")
     tablename <- paste("tablename", i, sep="")

     # By default I display a plot
     disp <- plotOutput(plotname, height = 280, width = 250)  
     # modifier may not be in the input if this is the first time the element is displayed
     if(modifier %in% names(input) && input[[modifier]] == "table") {
       disp = tableOutput(tablename)
     }
     # Make the output element display properly:
     tagList(
       textOutput(plottitle, container = h3),
       uiOutput(modifier),
       disp)
   })    
   # Convert the list to a tagList - this is necessary for the list of items
   # to display properly.
   do.call(tagList, plot_output_list)
})

# Call renderPlot for each one. Plots are only actually generated when they
# are visible on the web page.
for (i in 1:max_plots) {
    # Need local so that each item gets its own number. Without it, the value
    # of i in the renderPlot() will be the same across all instances, because
    # of when the expression is evaluated.
    local({
        my_i <- i
        modifier <- paste("select",i,sep="")
        plotname <- paste("plot", my_i, sep="")
        plottitle <- paste("plottitle", my_i, sep="")
        tablename <- paste("tablename", my_i, sep="")

        output[[plotname]] <- renderPlot({
        plot(1:my_i, 1:my_i, xlim = c(1, max_plots), ylim = c(1, max_plots), main = paste("1:", my_i, ".  n is ", input$n, sep = ""))
        })
        output[[plottitle]] <- renderText({paste("1:", my_i, ".  n is ", input$n, sep = "")
        })
        output[[tablename]] <- renderTable({table(x = 1:my_i, y = 1:my_i)
        })
        # I suspect the problem is the re-evaluation of this part that resets the "selected" field
        output[[modifier]] <- renderUI({selectInput(
                                          inputId = modifier,
                                          label="select how to display",
                                          choices = c("plot","table"),
                                          selected = 1)})
    })
}
})

ui.r

library(shiny)
shinyUI(pageWithSidebar(

  headerPanel("Dynamic number of plots"),

    sidebarPanel(
      sliderInput("n", "Number of plots", value=1, min=1, max=5)
    ),

    mainPanel(
      uiOutput("plots") # This is the dynamic UI for the plots
    )
))

虽然我不认为它是一个理想的解决方案,但分配:

output[[modifier]] <- renderUI({selectInput(
                                      inputId = modifier,
                                      label="select how to display",
                                      choices = c("plot","table"),
                                      selected = input[[modifier]])})

解决了问题,尽管我很高兴获得更好的解决方案(特别是避免每次重新构造输入对象的解决方案)。

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

在闪亮页面中使用可变数量的输入字段 的相关文章

  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • 在 Shiny 中显示反应式 htmlTable 表格

    我正在制作我的第一个 Shiny 应用程序 但找不到任何有关如何显示使用 htmlTable 包创建的表格的示例 我基本上想在按下按钮时创建一个表格并显示它 Shiny 显示 html 代码而不是表格 我不知道用什么替换服务器部分中的 re
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • 如何根据 ggplot2 中的汇总数据创建堆积条形图

    我正在尝试使用 ggplot 2 创建堆积条形图 我的宽格式数据如下所示 每个单元格中的数字是响应的频率 activity yes no dontknow Social events 27 3 3 Academic skills works
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • UWP 的“Add-DevAppPackage”Powershell 脚本检查开发人员许可证。这是侧面加载的问题吗?

    我正在开发一个 LOB 业务线 UWP 项目 我们希望将该应用程序作为 appxbundle文件 旁边是 cer和一个 Powershell 脚本 这是当您通过选择从 Visual Studio 生成捆绑包时在包中生成的内容Project
  • VS Code 终端打开,然后崩溃并在按终止按钮后消失

    在 VS Code 中单击 终止终端 后出现此错误 无法解析您的 shell 环境 生成的 shell 出现意外的退出代码 代码为 null 信号 SIGSEGV 现在 当我单击 终端 新终端 时 我的 VSCode 会执行此操作 它打开窗
  • CUDA 流销毁和 CudaDeviceReset

    我已经使用 CUDA 流实现了以下类 class CudaStreams private int nStreams cudaStream t streams cudaStream t active stream public default
  • 获取范围相对于其父容器的开始和结束偏移量

    假设我有这个 HTML 元素 div Hello everyone a This is my home page a p Bye p div 用户用鼠标选择 home 我希望能够确定有多少个字符 parent他的选择开始 以及从末尾开始有多
  • 重命名 JSON 中的属性

    你好 这是我的 json name test options Repartition Active Satellite No 我想用 s 重命名 卫星 中的 卫星 但我没有成功 我试过 UPDATE Liaison set content
  • 如何在将 html 写入 PDF 时应用样式

    我正在将 html 添加到 pdf 文件中 我的 html 是 div 形式 并且包含 style 属性 其样式如下border 2px solid red 但这种风格不适用于我正在写入 pdf 文件的 html 我正在使用以下代码 Doc
  • Cocoa 脚本:从“重复”命令返回克隆对象

    AppleScriptduplicate命令应该返回复制的对象 虽然使用基于 AE 的原始函数的应用程序似乎可以做到这一点 但基于 Cocoa 脚本框架的应用程序似乎永远不会返回任何内容 但缺失值 看来命令处理程序NSCloneComman
  • 是否有规范规定元素的 id 应该设为全局变量?

    如果我有一个 div 在 Chrome 中然后在 javascript 中我可以做a stuff 就好像a是一个全局变量 然而 这不适用于 FireFox 我需要使用document getElementById a 是什么正确的行为这里
  • 使用计时器更新列表 UI

    我正在尝试更新ListView with timer 我已经实现了 android UI 计时器 但我的问题是如何使用它ListView我需要在一定时间间隔后更新列表的每一行 处理程序如何更新列表的每一行 即假设TextView位于我将显示
  • 选择另一个受密码保护的数据库中的表?

    在 Microsoft Access 2003 和 Visual Basic 6 中 我尝试将表复制到另一个受密码保护的访问数据库 如下所示 Select INTO table2 IN database2 mdb Password Test
  • 在SSRS报告中显示条形码

    我正在尝试在 SSRS 报告中显示条形码 我在 Visual Studio 中的条形码报告中创建了一个字段 并将字体类型更改为 BC C39 3 到 1 Wide 格式 我用来显示的相应文本是 hellobarcode 每当我生成报告时 它
  • Clojure - 将字符串转换为整数向量的向量

    我试图解析一个文件并使用每一行来执行任意数量的函数和参数 我想调用的函数接受两个整数向量向量用于矩阵乘法 我能够将参数解析为一个向量 这样我就可以对其和解析的函数符号调用 apply 但我仍然需要将参数从字符串转换为适当的类型 我怎样才能实
  • “-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data”未调用

    看看这个代码片段 void connection NSURLConnection connection didReceiveResponse NSURLResponse response webData setLength 0 void c
  • 删除 websphere 中的 cookie - 如何注销

    我正在使用另一个网页 该网页通过 URL 将用户身份验证 AD 登录 传递到 WebSphere 当我注销时 我将重定向到登录页面 并且已经登录 因为我的会话从未关闭 我尝试了一些方法来禁用 WebSphere 的 cookie 但没有任何
  • IE中的rowspan和colspan问题

    因此 我需要创建具有复杂的 colspan 和 rowspan 系统的表 你可以看一下here 这是HTML table cellspacing 0 cellpadding 0 style width 100 tr td img src h
  • 如何在 MATLAB 中为该向量生成映射键?

    我有一个正在查看多个元素的函数 每个元素都是 8x1 列向量的形式 向量中的每个条目都是小于 1000 的整数 每次看到这样的向量时 我都会在检查该向量是否已在此列表中后将其添加到 已见过 向量列表中 该函数将检查约 100 000 个此类
  • 如何使用 Perl 找到目录及其所有子目录中最新的 .pl 文件?

    如何扫描整个目录的内容 包括其子目录的内容 并找到最新的 pl使用 Perl 在其中创建文件 我想构建所有完整文件路径的排序数组 列表 pl目录树中的文件 因此 例如 如果我的基本目录是 home users cheeseconqueso
  • C#同时执行2个线程

    我正在尝试在 HTTP 处理程序中重现线程错误条件 基本上 ASP net 工作进程正在创建 2 个线程 它们在加载某个页面时同时调用我的应用程序中的 HTTP 处理程序 http 处理程序内部是一个非线程安全的资源 因此 当两个线程尝试同
  • Visual Studio 不在我的 Asp.net MVC 视图中显示 Linq 扩展

    这让我感到困惑 我似乎无法使 Visual Studio 2010 识别视图代码中的 System Linq 扩展方法 Intellisense 不起作用 并且 Visual Studio 红色下划线无法识别的扩展方法 这些是 web co
  • 在闪亮页面中使用可变数量的输入字段

    我的问题如下 我有一个闪亮的应用程序 它根据用户输入显示可变数量的输出元素 例如 详细信息如下 使用闪亮动态添加绘图到网页 但是 我还想向每个输出元素添加一个输入元素 允许用户为输出指定一些修饰符 例如 让用户选择将每个元素视为绘图还是表格