File io 从fileInput中选择多个输入

File io 从fileInput中选择多个输入,file-io,shiny,selectize.js,File Io,Shiny,Selectize.js,我想让用户输入一个文件(.csv),从该文件中,两个selectizeInputs将填充.csv的列名。用户将询问上传文件中的哪些列是y变量,哪些列是x变量。这,我能做到 我不能做的是:我想让y变量中的选择从x变量下拉菜单中的x变量选项中消失 此外,我还使用了尝试提供帮助,但他们没有使用fileInput中的值。因此,我无法让下面的代码正常工作。感谢您提供的任何建议/帮助 ui<- fluidPage( titlePanel("Test"), sidebarPanel(

我想让用户输入一个文件(.csv),从该文件中,两个selectizeInputs将填充.csv的列名。用户将询问上传文件中的哪些列是y变量,哪些列是x变量。这,我能做到

我不能做的是:我想让y变量中的选择从x变量下拉菜单中的x变量选项中消失

此外,我还使用了尝试提供帮助,但他们没有使用fileInput中的值。因此,我无法让下面的代码正常工作。感谢您提供的任何建议/帮助

ui<- fluidPage(

  titlePanel("Test"),

  sidebarPanel(
    fileInput(inputId = "file1", label = "Upload File"),
    selectizeInput(
      "sampleyvars", "Y-vars", choices = NULL, multiple = FALSE
    ),
    selectizeInput(
      "samplevars", "X-vars", choices = NULL, multiple = TRUE
    )

  ),

  mainPanel(h3("Nothing special")
  )
)

server<- function(input, output, session) {

  observe({
    file1 <- input$file1
    if(is.null(file1)){return()} 
    dataSet <- read.csv(file=file1$datapath)

    vals1<-input$sampleyvars
    vals2<-input$samplevars

    updateSelectizeInput(session, "sampleyvars",
                         choices =  colnames(dataSet)[! vals1 %in% vals2])
    updateSelectizeInput(session, "samplexvars",
                         choices =colnames(dataSet)[! vals2 %in% vals1])
  })

}

shinyApp(ui = ui,server = server)

ui您的X变量小部件的
ID
错误:
samplevars
而不是您在
update*
函数中使用的
samplexvars
。我将其更改为后一个ID,并稍微调整了代码以获得所需的效果


完整示例:

  ui<- fluidPage(

  titlePanel("Test"),

  sidebarPanel(
    fileInput(inputId = "file1", label = "Upload File"),
    selectizeInput(
      "sampleyvars", "Y-vars", choices = NULL, multiple = FALSE
    ),
    # you had ID here wrong
    selectizeInput(
      "samplexvars", "X-vars", choices = NULL, multiple = TRUE
    )

  ),

  mainPanel(h3("Nothing special")
  )
)

server<- function(input, output, session) {

  data <- reactive({
    file1 <- input$file1
    req(file1)
    dataSet <- read.csv(file=file1$datapath)
    vars <- colnames(dataSet)

    updateSelectizeInput(session, "sampleyvars", "Y-vars",
                         choices = vars, selected = vars[1])
    updateSelectizeInput(session, "samplexvars", choices = vars[-1], selected = vars[2])

    dataSet
  })

  observe({
    varX <- colnames(data())
    varX <- varX[!(varX %in% input$sampleyvars)]
    updateSelectizeInput(session, "samplexvars", "X-vars", choices = varX)
  })

}

shinyApp(ui = ui,server = server)

uiAh……非常感谢!这正是我需要的。