【发布时间】:2021-01-20 02:46:56
【问题描述】:
我想构建一个命令并让用户定义最多 5 个可选参数(params1 到 params5),这些参数被添加到用“-p”分隔的命令字符串中。
-p var1=1 -p var2="one" -p option1="null" -p option2="no comment"
用户界面:
textInput("params1", label = "#1"),
textInput("params2", label = "#2"),
textInput("params3", label = "#3"),
textInput("params4", label = "#4"),
textInput("params5", label = "#5"),
例如,在我当前的界面中,用户可以将它们全部留空或填充一个或多个。
有没有一种优雅的方式(比我冗长且失败的代码更好)使用一些应用魔法来处理它们,并且只考虑用户放置了一些内容的 textInput 字段?
我尝试使用 get(paste0("input$params", i)) 来命名 5 个输入并获取 5 个值,但闪亮的抱怨
服务器:
params <- reactive({
parlist <- list()
parstring <- ""
for (i in 1:5){
parval <- try(get(paste0("input$params",i)))
if (exists(parval)){
parlist <- c(parlist, parval)
}
}
if (exists(parlist)){
parstring=paste0(" -p ", stri_join_list(parlist, collapse= " -p "))
} else {
parstring=""
}
return(parstring)
})
导致
Error in get(paste0("input$params", i)) :
object 'input$params1' not found
Error in get(paste0("input$params", i)) :
object 'input$params2' not found
Error in get(paste0("input$params", i)) :
object 'input$params3' not found
Error in get(paste0("input$params", i)) :
object 'input$params4' not found
Error in get(paste0("input$params", i)) :
object 'input$params5' not found
Warning: Error in exists: invalid first argument
我现在的问题是测试现有的 textInputs 值 (input$params1 ... input$params5) 并将其添加到一个向量或列表中,然后我可以在代码中使用它。
【问题讨论】: