2017-02-06 2 views
0

Привет, у меня есть этот довольно простой скрипт, который я не могу заставить работать ... он дает мне гистограмму, но не для переменной, которую я просил! Например, когда я выбираю переменную AGE, она не отображает гистограмму AGE для популяции, а общая популяция: очень вероятно, что она выберет весь столбец dat вместо dat $ AGE, но я не могу найти решениеПроблема с скриптом Shiny и ggplot2

server.R:

library(shiny) 
library(ggplot2) 
library(plotly) 


shinyServer(function(input, output, session) { 

    dat <- reactive({ 
    req(input$df) 
    dfile <- read.csv(input$df$datapath) 
    updateSelectInput(session,inputId = 'select1', label = 'Variable', 
         choices = colnames(dfile)) 
    return(dfile) 
    }) 



    output$data <- renderUI({ 
    if (!is.null(input$df$datapath)){ 
    selectInput('select1', choices = names(dat()), label = h3('Variable')) 
    } 
    }) 

    output$plot <- renderPlotly(ggplotly(
     ggplot(data=dat(),aes(x=input$select1)) + geom_histogram(stat = "count"))) 
    }) 

ui.R

library(shiny) 
library(ggplot2) 
library(plotly) 

shinyUI(fluidPage(

    sidebarLayout(
     sidebarPanel(
     fileInput("df","CSV file :"), 
     uiOutput("data") 
), 

     mainPanel(
     h2(plotlyOutput("plot")) 
    ) 
) 
)) 

Если вы можете помочь, я искал это весь день: 3

ответ

1

В вашем вызове ggplot измените aes отображение на

aes_string("x" = input$select1) 

поскольку input$select1 является строкой. Другими словами, ваш исходный код делает aes(x = "AGE"), а не aes(x = AGE), что и есть то, что вы хотите.

+0

Большое спасибо –

+1

Добро пожаловать! Если этот ответ разрешил ваш вопрос, отметьте его как принятый. –

Смежные вопросы