无法调用输入 $"OptionType1"
Cannot call input$"OptionType1"
我正在尝试在我的 Shiny 应用程序中创建动态 UI。每次通过按钮添加输入时,我都会增加一个变量 (dealNumber)。但是,我需要从这些新输入中获取值。我将 dealNumber 的值添加到每个输入的 ID。但是,我很难提取这些值。
#I use the following code to create a new input
#dealNumber = 1
column(2,selectInput(paste("optionType",dealNumber,sep=""), label = h5(""),choices = option_type, selected = 1)
#I then need to assign the value from the input above to the variable OptionType. If i use input$"OptionType1" or input$OptionType1 it works. But I need to get the number 1 via a variable so that the code is dynamic.
#I have tried the code below without any sucess
assign("OptionType",input$paste("OptionType",dealNumber,sep=""),.GlobalEnv)
如有任何帮助,我将不胜感激。
谢谢
基本上,您希望将字符串变量作为 "argument" 传递给 input
对象以检索值。这可以通过 input[["myString"]]
.
来实现
为了说明如何将其用于动态分配的 ID,请参见以下示例。
create_slider <- function(i) {
sliderId <- paste0("slider", i)
sliderInput(sliderId, sliderId, 0, 1, 0)
}
shinyApp(
fluidPage(
create_slider(1),
create_slider(2),
create_slider(3),
numericInput("get_id", "get value of slider", 1, 1, 3, 1),
textOutput("text")
),
function(input, output, session) {
output$text <- renderText({
input[[ paste0("slider", input$get_id) ]]
})
}
)
一般来说,我建议不要为此目的使用 assign
。相反,使用功能逻辑来捕获来自 dealNumber
.
的输入
getDynamicInput <- function(dealNumber, input) {
input[[ paste0("optionType", dealNumber) ]]
}
始终牢记,您构建的 ID 必须是唯一的
和有效的 HTML
id(没有空格!)。因此,paste0
在这种情况下非常有用。
也许您应该考虑使用 shiny-modules 以编程方式
分配 input
个插槽以避免在服务器端进行繁琐的字符串解析。
我正在尝试在我的 Shiny 应用程序中创建动态 UI。每次通过按钮添加输入时,我都会增加一个变量 (dealNumber)。但是,我需要从这些新输入中获取值。我将 dealNumber 的值添加到每个输入的 ID。但是,我很难提取这些值。
#I use the following code to create a new input
#dealNumber = 1
column(2,selectInput(paste("optionType",dealNumber,sep=""), label = h5(""),choices = option_type, selected = 1)
#I then need to assign the value from the input above to the variable OptionType. If i use input$"OptionType1" or input$OptionType1 it works. But I need to get the number 1 via a variable so that the code is dynamic.
#I have tried the code below without any sucess
assign("OptionType",input$paste("OptionType",dealNumber,sep=""),.GlobalEnv)
如有任何帮助,我将不胜感激。
谢谢
基本上,您希望将字符串变量作为 "argument" 传递给 input
对象以检索值。这可以通过 input[["myString"]]
.
为了说明如何将其用于动态分配的 ID,请参见以下示例。
create_slider <- function(i) {
sliderId <- paste0("slider", i)
sliderInput(sliderId, sliderId, 0, 1, 0)
}
shinyApp(
fluidPage(
create_slider(1),
create_slider(2),
create_slider(3),
numericInput("get_id", "get value of slider", 1, 1, 3, 1),
textOutput("text")
),
function(input, output, session) {
output$text <- renderText({
input[[ paste0("slider", input$get_id) ]]
})
}
)
一般来说,我建议不要为此目的使用 assign
。相反,使用功能逻辑来捕获来自 dealNumber
.
getDynamicInput <- function(dealNumber, input) {
input[[ paste0("optionType", dealNumber) ]]
}
始终牢记,您构建的 ID 必须是唯一的
和有效的 HTML
id(没有空格!)。因此,paste0
在这种情况下非常有用。
也许您应该考虑使用 shiny-modules 以编程方式
分配 input
个插槽以避免在服务器端进行繁琐的字符串解析。