【问题标题】:FInd the input ID of a textinput element dynamically动态查找 textinput 元素的输入 ID
【发布时间】:2016-12-24 15:19:13
【问题描述】:

我在 R Shiny 中有一个简单的服务器/用户界面程序。通过 lapply,我创建了 - 让我们说 - 10 个 textInputs。

输入的名称是 marker1 marker2 marker3 etc.. 具有预定义的值(没有空值)。我创建了一个 observeEvent 来检查用户何时按下在 UI 中创建的提交按钮,以便我可以操作新值。

当我这样做时

     print(input$marker1)

它工作正常,它显示了特定标记的值。

问题是,我想对所有标记都这样做,并且它们的数量不是静态的,所以我想出了这个想法,但它不起作用:

     for(i in length(markers))
     {
       markername = paste0("marker",i);
       print(input$markername)
     }

我理解这背后的逻辑是错误的,因为在 input$ 之后你需要输入输入的实际名称,但是当我的标记数量是动态的时我该怎么做?

编辑 #1 和更新:

查看输入格式后,我找到了这个,它实际上可以让您粘贴输入的名称:

      input[[paste0("name",i)]]

所以,现在的问题是这样的。

     for(i in length(markers))
     {
       global_var[i] <<- input[[paste0("name",i)]]
     }
     print(global_var)

现在的问题是我在 global_var 对象的第一个位置得到了 NULL,除了正确完成分配的最后一个位置。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    我遇到的问题是如何设置我想要动态显示的输入的名称。如上所示,我尝试了不同的方法,但现在我提出了整个解决方案,它还为您(如果需要)提供列表中所述“分组”输入的值。

    我使用了一个名为 newNames 的全局变量(因为我也想使用其他输出中的值)并在开始时将其初始化为 NULL,其余代码如下所示,它是一个简单的 lapply:

          lapply(1:length(markers), function(i) 
          {
            newNames[i] <<- input[[paste0("marker", i)]]
          })
          printf(newNames)
    

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2019-08-16
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2022-09-26
      相关资源
      最近更新 更多