因此,我尝试获取输入文件,读取列名称,并将其作为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)
答案 0 :(得分:0)
我无法让你的例子运行,似乎有一些错误。但是,这里简要介绍了您可以尝试解决问题的方法。
在读入文件后,您可以使用updateCheckboxGroupInput
更改输入选项的值。假设您的nms()
被动对象正在运行,您可以在其后添加此块:
observeEvent(nms(), {
updateCheckboxGroupInput(session, "design.variables", choices = nms())
})
每当choices
更改时,这会更新您checkboxGroupInput
上nms()
的值。您需要做的另一项更改是将session
对象传递给服务器,方法是将服务器函数指定为:
server <- function(input, output, session) { ... # Everyhing else }
有关使用update*
函数的另一个示例,请查看我对有关更新输入值here的类似问题的回答。
PS。 uiOutput
用于根据renderUI
给出的输出创建ui元素。 renderPrint
创建一个包含您通常在控制台上看到的打印输出的字符串 - 要在ui中显示文本,您必须使用textOutput
函数。