如何将从输入数据帧中获取的字符串标签向量作为checkboxGroupInput中的选项传递

时间:2015-07-20 17:04:07

标签: r shiny

因此,我尝试获取输入文件,读取列名称,并将其作为checkboxGroupInput()中的选项返回。

它当前提取列名并将它们作为字符串向量返回,但我无法将其用作checkboxGroupInput中的选项。

注意:服务器的实际代码使用read.csv(file = file1$datapath)和上传的文件(并且正常工作),但我不知道如何在此复制中包含.csv文件。所以我尝试在这里使用read.table()和数据框的文本表示,以便创建可重现的示例(可能无法完美地工作)。

library(shiny)

df <- "substrate rep treatment time RFU
1             1   1      live  9:56 137,813.04
2             1   2      live  9:57 135,673.5
3             1   3      live  9:57 138,597.51
4             1 kill    killed 9:57 138,111.29
5             2   1      live  9:58 131,257.6
6             2   2      live  9:58 129,746.85"

ui <- fluidPage( 

  titlePanel("File Upload"),
  sidebarLayout(
    sidebarPanel(
      fileInput(inputId = "data", label = "Data")
    ),
    mainPanel(
      uiOutput("names")
    ),
    checkboxGroupInput("design.variables", "Design Variables",
                       uiOutput("names")
    )
  )
)

server <- function(input, output){

  nms <- reactive({
    file1 <- input$data
    if(is.null(file1)){return()} 
    d_uncal <- read.table(file = df
                        header = TRUE, stringsAsFactors = FALSE)
    nm <- names(d_uncal)
    nm
  })

  output$names <- renderPrint({
    if(is.null(nms()))
      return()
    else
      nms()

  })
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

我无法让你的例子运行,似乎有一些错误。但是,这里简要介绍了您可以尝试解决问题的方法。

在读入文件后,您可以使用updateCheckboxGroupInput更改输入选项的值。假设您的nms()被动对象正在运行,您可以在其后添加此块:

observeEvent(nms(), {
  updateCheckboxGroupInput(session, "design.variables", choices = nms())
})

每当choices更改时,这会更新您checkboxGroupInputnms()的值。您需要做的另一项更改是将session对象传递给服务器,方法是将服务器函数指定为:

server <- function(input, output, session) { ... # Everyhing else }

有关使用update*函数的另一个示例,请查看我对有关更新输入值here的类似问题的回答。

PS。 uiOutput用于根据renderUI给出的输出创建ui元素。 renderPrint创建一个包含您通常在控制台上看到的打印输出的字符串 - 要在ui中显示文本,您必须使用textOutput函数。