我有一个小问题。我制作了一个上传文件的程序,有两个标签:
第一个标签(表格)显示文件中的所有列。
第二个标签(表格2)显示通过滑块选择的列
item.Elements
:
server.R
shinyServer(function(input,output){
data <- reactive({
file1 <- input$file
if(is.null(file1)){return()}
read.table(file=file1$datapath, sep=input$sep, header = input$header )
})
output$table <- renderTable({
if(is.null(data())){return ()}
data()
})
output$table2 <- renderTable({
if(is.null(data())){return ()}
data()[c(input$slider1)]
})
output$tb <- renderUI({
if(is.null(data()))
h5("Wgraj Plik jeśli chcesz cokolwiek zrobić")
else
tabsetPanel(tabPanel("dane", tableOutput("table")),tabPanel("wybrana kolumna", tableOutput("table2")))
})
})
:
ui.R
我需要将滑块更改为一个输入框,其中包含从上传文件的列标签中读取的选项。
我尝试通过# ui.R
shinyUI(fluidPage(
titlePanel("Aplikacja testowa numer 5 Praca z plikiem"),
sidebarLayout(
sidebarPanel(
fileInput("file", label = h3("Wgraj Plik")),
checkboxInput(inputId = 'header', label = 'Pierwszy wers to etykiety', value = FALSE),
radioButtons(inputId = 'sep', label = 'Co jest separatorem', choices = c(Przecinek=',',Średnik=';',Tabulator='\t', Spacja=''), selected = ','),
sliderInput("slider1", label = h3("Slider"), min = 1, max = 20, value = 1)
),
mainPanel(
uiOutput("tb")
)
)
))
自己做一些事情,但我不知道如何让它读取列标签。
答案 0 :(得分:0)
这会对你有用吗?
首先渲染一个空checkboxGroupInput
并在提交数据后立即更新其选择。
代码:
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Aplikacja testowa numer 5 Praca z plikiem"),
sidebarLayout(
sidebarPanel(
fileInput("file", label = h3("Wgraj Plik")),
checkboxInput(inputId = 'header', label = 'Pierwszy wers to etykiety', value = FALSE),
radioButtons(inputId = 'sep', label = 'Co jest separatorem', choices = c("Przecinek"=',',"Średnik"=';',"Tabulator"='\t', "Spacja"=''), selected = ','),
checkboxGroupInput("choices1", label = h3("Column names"), choices = NULL)
),
mainPanel(
uiOutput("tb")
)
)
))
server <- function(input, output, session){
data <- reactive({
file1 <- input$file
if(is.null(file1)){return()}
dataSet <- read.table(file=file1$datapath, sep=input$sep, header = input$header )
# Change made here: use the dataSet to modify selection choices.
updateCheckboxGroupInput(session, "choices1", choices = colnames(dataSet))
dataSet
})
output$table <- renderTable({
if(is.null(data())){return ()}
data()
})
output$table2 <- renderTable({
# Changes made here: 1) If no box is ticked, don't try to render.
# 2) Take list of colnames to select columns. (Multiple work.)
if(is.null(data()) || is.null(input$choices1)){return ()}
data()[input$choices1]
})
output$tb <- renderUI({
if(is.null(data()))
h5("Wgraj Plik jeśli chcesz cokolwiek zrobić")
else
tabsetPanel(tabPanel("dane", tableOutput("table")),tabPanel("wybrana kolumna", tableOutput("table2")))
})
}
shinyApp(ui, server)