2016-04-19 8 views
1

。私はそれにヒストグラム機能を追加する必要があります。3番目のタブのアプリケーションで(シャイニー、R)コンボボックス/選択入力を介して列選択で(csvファイルからヒストグラムを作る。私は私のaplicationで別の問題を抱えている

を作成する必要がありますタブにアップロードされたファイルからヒストグラム(列がコンボボックス/ selectinputを経由して選択される)

アプリケーションが実際にCSVファイルの列にコンボボックスを作成することができます

をしかし、私は、ヒストグラムを作りたい、「ヒストグラムのみエラーが表示されます。

ERROR: object of type 'closure' is not subsettable 

私は何が間違っているのか分かりません。

問題は、あなたが次のコードの塊でdata()を追加し忘れたということでしたコード

ui <- shinyUI(fluidPage(
    titlePanel("Aplikacja testowa nr 6. Praca z plikiem- wybór kolumny"), 

    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("Wybierz Kolumny"), choices = NULL), 
     # there is combobox to pick column 
     selectInput("combobox", label = h3("(Histogram) Wybierz kolumne"), choices = NULL) 





    ), 

    mainPanel(
     uiOutput("tb") 
    ) 
) 
)) 

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

    data <- reactive({ 
    file1 <- input$file 
    if(is.null(file1)){return()} 
    dataSet <- read.csv(file=file1$datapath, sep=input$sep, header = input$header) 

    updateCheckboxGroupInput(session, "choices1", choices = colnames(dataSet)) 
     # this line updates selection in combobox 
    updateSelectInput(session, "combobox", choices = colnames(dataSet)) 

    dataSet 
    }) 

    output$table <- renderTable({ 
    if(is.null(data())){return()} 
    data()  
    }) 

    output$table2 <- renderTable({ 


    if(is.null(data()) || is.null(input$choices1)){return()} 
    data()[input$choices1]  
    }) 

# there is part of file where i make histogram 
output$wykres <- renderPlot({ 
x <- data[0, input$combobox] 
hist(x , col = 'blue', border = 'white') 
}) 


    output$tb <- renderUI({ 
    if(is.null(data())) 
     h5("Wgraj Plik jeśli chcesz cokolwiek zrobić.") 
    else 
     tabsetPanel(tabPanel("dane", tableOutput("table")),tabPanel("wybrane kolumny", tableOutput("table2")), tabPanel("Histogram", plotOutput("wykres"))) 
    }) 
} 

shinyApp(ui, server) 
+0

'hist'コードの中で、' data'の後にかっこを入れるのを忘れてしまいました。 'x < - data()[0、.......' –

+0

ああ...すみません - 質問に答える前にあなたのコメントが見えませんでした。 –

答えて

1

があります。

output$wykres <- renderPlot({ 
    # x <- data[, input$combobox] # zapomniales klamry 
    x <- data()[, input$combobox] 
    hist(x , col = 'blue', border = 'white') 
    }) 

私はさらにshinyBSパッケージとし、req(is.numeric(x))を追加することで、アラームを作成することで、hist関数に離散変数を渡すことを避けるために、あなたのコードを拡大しました。

library(shinyBS) 

ui <- shinyUI(fluidPage(
    titlePanel("Aplikacja testowa nr 6. Praca z plikiem- wybór kolumny"), 

    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("Wybierz Kolumny"), choices = NULL), 
     # there is combobox to pick column 
     selectInput("combobox", label = h3("(Histogram) Wybierz kolumne"), choices = NULL) 

    ), 

    mainPanel(
     uiOutput("tb") 
    ) 
) 
)) 

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

    data <- reactive({ 
    file1 <- input$file 
    if(is.null(file1)){return()} 
    dataSet <- read.csv(file=file1$datapath, sep=input$sep, header = input$header) 

    updateCheckboxGroupInput(session, "choices1", choices = colnames(dataSet)) 
    # this line updates selection in combobox 
    updateSelectInput(session, "combobox", choices = colnames(dataSet)) 

    dataSet 
    }) 

    output$table <- renderTable({ 
    if(is.null(data())){return()} 
    data()  
    }) 

    output$table2 <- renderTable({ 


    if(is.null(data()) || is.null(input$choices1)){return()} 
    data()[input$choices1]  
    }) 

    # there is part of file where i make histogram 
    output$wykres <- renderPlot({ 
    x <- data()[, input$combobox] 

    if (!is.numeric(x)) { 
     createAlert(session, "alarm", alertId = "niebezpieczenstwo", 
        title = "Niebezpieczenstwo: ", 
        content = "Histogram przyjmuje tylko wartosci ciagle!", 
        style = "danger", dismiss = TRUE, append = TRUE) 
    } 
    if (is.numeric(x)) { 
     closeAlert(session, "niebezpieczenstwo") 
    } 

    req(is.numeric(x)) 
    hist(x , col = 'blue', border = 'white') 
    }) 


    output$tb <- renderUI({ 
    if(is.null(data())) 
     h5("Wgraj Plik jeśli chcesz cokolwiek zrobić.") 
    else 
     tabsetPanel(tabPanel("dane", tableOutput("table")), 
        tabPanel("wybrane kolumny", 
          tableOutput("table2")), 
        tabPanel("Histogram", 
          bsAlert("alarm"), 
          plotOutput("wykres"))) 
    }) 
} 

shinyApp(ui, server) 
+0

あなたのお皿をありがとうございました。本当に助けになりました。 –

関連する問題