使用renderUI()更新动态UI后提取输入小部件的值

使用renderUI()更新动态UI后提取输入小部件的值,r,shiny,dynamic-ui,R,Shiny,Dynamic Ui,我已经通过renderUI()成功地动态更新了UI。我有一个长长的输入列表可供选择。复选框用于动态添加数字输入。所以,为了实现这一点,我使用了lappy。然而,我在checkboxgroup本身中使用了选中复选框的值来填充动态添加的数字输入的ID,而不是在Lappy中使用paste(input,I) 用户界面代码片段: 服务器代码片段: renderUI({ numInputs <- length(input$checkboxgrp) if(numInputs==0){

我已经通过renderUI()成功地动态更新了UI。我有一个长长的输入列表可供选择。复选框用于动态添加数字输入。所以,为了实现这一点,我使用了lappy。然而,我在checkboxgroup本身中使用了选中复选框的值来填充动态添加的数字输入的ID,而不是在Lappy中使用paste(input,I)

用户界面代码片段:

服务器代码片段:

renderUI({
    numInputs <- length(input$checkboxgrp)

    if(numInputs==0){
      wellPanel("No transaction selected")
    }
    else{
      lapply(1:numInputs, function(i){
        x[i]=input$checkboxgrp[i]
        list(numericInput(input$checkboxgrp[i], min = 0, label = input$checkboxgrp[i], 
                         value= input[[x[i]]] ))
      })
    }
  })
  output$value <- renderPrint({
    numInputs <- length(input$checkboxgrp)
    lapply(1:numInputs, function(i){
      print(input[[x[i]]]) ## ERROR
    })
  })
使用
打印(输入[[x[i]])#错误

NULL
NULL
NULL
NULL
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL
Must use single string to index into reactivevalues
invalid subscript type 'language'
使用
打印('$'(输入,x[i])#错误

NULL
NULL
NULL
NULL
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL
Must use single string to index into reactivevalues
invalid subscript type 'language'

如果我理解正确,您希望访问动态生成的小部件的值,然后将它们打印出来

在我下面的例子中,应该很容易概括,选择是iris数据集中变量
Setosa
的级别

生成的小部件的ID始终由
checkboxGroupInput
中的选定值提供。因此,
input$checkboxgrp
告诉Shining应该为哪一级别的setosa生成一个小部件。同时
input$checkboxgrp
给出生成的小部件的ID。这就是为什么不需要将“活动”小部件的ID存储在其他变量
x
中(这可能是一个被动值)

要打印这些值,可以执行以下操作:

 output$value <- renderPrint({

     activeWidgets <- input$checkboxgrp
     for (i in activeWidgets) {
       print(paste0(i, " = ", input[[i]]))
     }
   })

编辑:


您可以稍微调整一下
lappy
部分(注意
如果我理解正确,您希望访问动态生成的小部件的值,然后将其打印出来

在我下面的例子中,应该很容易概括,选择是iris数据集中变量
Setosa
的级别

生成的小部件的ID总是由
checkboxGroupInput
中的选定值给出。因此,
input$checkboxgrp
告诉Shining应该为哪一级别的setosa生成小部件。同时
input$checkboxgrp
给出生成的小部件的ID。这就是为什么不需要存储其他变量
x
中的“活动”窗口小部件(可能是被动值)

要打印这些值,可以执行以下操作:

 output$value <- renderPrint({

     activeWidgets <- input$checkboxgrp
     for (i in activeWidgets) {
       print(paste0(i, " = ", input[[i]]))
     }
   })

编辑:


你可以稍微调整一下
lappy
部分(注意
(y),感谢您详细的回答,真的很有帮助。我能够打印小部件的值,但是,我想构造一个命名向量,其中包含
checkboxGroupInput
中的所有选项,并在dynamic
NumericiInput
和0中填充相应的值。您能帮忙吗?我更新了我的答案:)我希望这次它能回答这个问题。我使用非标准评估来评估所有的
数值输入是否可用,从而防止错误。它们的值可以在很短的时间内
NULL
(我们不能这样做:res[I]谢谢@UnnamedUser!!现在一切都排序好了(y):(y),感谢您详细的回答,真的很有帮助。我能够打印小部件的值,但是,我想构造一个命名向量,其中包含
checkboxGroupInput
中的所有选项,并在dynamic
NumericiInput
和0中填充相应的值。您能帮忙吗?我更新了我的答案:)我希望这次它能回答这个问题。我使用非标准评估来评估所有的
numericInput
s是否可用,从而防止错误。它们的值可以在很短的时间内
NULL
(我们不能这样做:res[I]谢谢@UnnamedUser!!现在一切都排序好了(y):)