如何解决如何使用 lapply 存储输出?
我正在构建一个应用程序,允许用户提交足球运动员的阵型。播放器名称存储在 .csv 文件中。这些名称被读入,然后作为选择输入的输入。用户应该首先选择一个编队,然后根据所选的编队出现带有名称的选择输入。通过使用 lapply,这很有效(在下面的示例中,有 2 个选择输入)。
我现在的问题是我想将选定的名称存储在一个变量中以进一步使用它们。变量 myval 应该存储选定的名称。它以某种方式仅适用于第一个选择输入的第一个选定名称。
myval <- eventReactive(input$i[1],{input$i[1]})
但这不起作用:
myval <- eventReactive(input$i[2],{input$i[2]})
您可以在下面找到完整的代码。 非常感谢!
ui.R:
fluidPage(
#Dropdown
selectInput("Formation",label = "Formation",choice = c("",433,343)),#Output
uIoUtput(outputId = "select_formation")
)
server.R:
function(input,output,session){
#input_names <- read.csv("temp.csv",TRUE,";")
input_names <- structure(list(Goalkeeper = c("-","Max","Mo","Tobi","",""),Defender = c("-","Bob","Julius","Mat","Hans","Peter","Tom")),class = "data.frame",row.names = c(NA,-7L))
output$select_formation = renderUI(
if(input$Formation == 433){
lapply(1:2,function(i){
selectInput(inputId = "i",label = names(input_names[i]),choices = c(input_names[,i]))
})
})
myval <- eventReactive(input$i[2],{input$i[2]})
}
解决方法
感谢提供数据。这是一个可能有用的工作示例。
动态创建的 inputId
的 selectInput
是由 paste0("id",i)
创建的,因此您的示例中将有 id1
和 id2
。
您的 myval
reactive
表达式可以再次通过 lapply
获取输入值列表,使用相同的 id 供参考。
library(shiny)
ui <- fluidPage(
selectInput("Formation",label = "Formation",choice = c("",433,343)),uiOutput(outputId = "select_formation"),uiOutput("select_inputs")
)
server <- function(input,output,session) {
output$select_formation = renderUI(
if(input$Formation == 433){
lapply(1:2,function(i){
selectInput(inputId = paste0("id",i),label = names(input_names[i]),choices = c(input_names[i]))
})
})
myval <- reactive({
lapply(1:2,function(i) {
input[[paste0("id",i)]]
})
})
output$select_inputs <- renderUI({
paste("You selected: ",paste(myval(),collapse = ","))
})
}
shinyApp(ui,server)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。