2015-04-29 1 views
2

Недавно я начал строить блестящее приложение, но я застрял. Пожалуйста, помогите мне.Спасибо заранееR блестящий, не могу задать имена столбцов с помощью Shiny реактивной переменной для ggplot

Я пытаюсь создать гистограмму, чтобы показать количество для разных типов наличных денег и другого термина. Эта часть, код прошел хорошо.

И еще я хочу создать поле для отображения числового сводки для разных переменных, выбранных пользователем. Я создал selectInput, называемый «метрикой», а затем создаю реактивный вызов «metric1» в server.R. а затем используйте «metric1» в качестве переменных, которые я выбрал для создания полевого графика на сервере. R.

Но он продолжает говорить «не может найти функцию« метрическая1 ». Я не знаю, почему он считает« метрикой1 »как функцию? Он должен быть векторным именем переменной, выбранной пользователем. И если Я использую входную метрику $ ggplot для создания прямоугольника напрямую, он все еще говорит об ошибке: «объект» вход «не найден». Почему я не могу найти вход? Я вставляю код ниже. Это не длинный код. И, пожалуйста, помогите мне !

library(shiny) 
library(ggplot2) 

cash <- read.csv("cash 042014-032015.csv") 
cash$TERM <- as.numeric(cash$TERM) 

shinyServer(function(input, output) { 

    dataset <- reactive({cash[cash$mapped_name %in% (input$model),]}) 
    metric1 <- reactive({input$metric}) 

    output$caption <- renderText({ 
    input$model 
    }) 

    output$countPlot <- renderPlot({  
    p <- ggplot(dataset(), aes(Incentive.Type, fill=factor(Incentive.Type))) + geom_bar()+ facet_grid(~TERM, margins=TRUE)+theme(axis.text.x =  element_blank(),axis.ticks=element_blank(),legend.text =  element_text(size=20))+guides(fill=guide_legend(title="Incentive  Type"),title.theme=element_text(size=30))+scale_x_discrete(limits=c("Standard","Standard+Captive","Standard+Customer","Standard+Captive+Customer","Special","Special+Captive","Special+Customer","Special+Captive+Customer")) 
    print(p)  
    }) 

    output$summaryPlot <- renderPlot({ 
    p <- ggplot(dataset(),aes(factor(Incentive.Type), metric1()))+geom_boxplot() 
    print(p) 
    }) 
}) 

Вот ui.R

library(shiny) 
library(ggplot2) 

dataset <- cash 

shinyUI(

    fluidPage( 

# Give the page a title 
titlePanel("Incentives by Model"), 

# Generate a row with a sidebar 
    sidebarPanel(
    checkboxGroupInput("model", "Select Models:", 
       choices=c("370Z","Altima","Armada","Crew","Cube","Frontier","GTR","Juke","Leaf", 
          "Maxima","Murano","NV","Other","Pathfinder","Quest","Rogue","Sentra","Titan","Versa","Xterra"),selected="Altima"), 
    selectInput("metric","Please select an option below:", choices=c("Dealer Commission Amount"="DLR_COMM_AMT", "Total Monthly Payment"="TOT_MO_PMT","Original Loan Amount"="ORIG_LN_AMT", "Rate"="RATE"), 
       selected="DLR_COMM_AMT"), 
    width=2 
), 


mainPanel(
    h3(textOutput("caption", container=span)), 
    plotOutput("countPlot"), 
    plotOutput("summaryPlot") 

) ))

+1

Возможно, потому что вы случайно набрали metric1() во втором вызове ggplot :) –

+0

, пожалуйста, не забудьте принять ответ, если он вам помог. –

ответ

2

Попробуйте изменить metric1() во втором ggplot, позвоните в metric1. Как и в:

p <- ggplot(dataset(),aes(factor(Incentive.Type), metric1))+geom_boxplot() 

На самом деле я думаю, что вам придется использовать что-то вроде:

p <- ggplot(dataset(),aes_string(factor("Incentive.Type"), "metric1"))+geom_boxplot() 

Для того, чтобы получить его, чтобы увидеть значение вашей переменной metric1 и правильно интерпретировать использование строковых переменных внутри ggplot.

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