2017-10-21 11 views
0

私は光沢のあるスキルを練習するためにmpgデータセットを使用していますが、私はPlotOutput関数を試してみたいと思います。それは私に予期しない "、"があると私に言った。何故かはわからない。PlotOutputは予期せぬことについて語った

library(shiny) 
    library(ggplot2) 
    library(dplyr) 

    shinyUI(fluidPage(

    plotOutput("plot1", 
     click = "plot_click", 
     dblclick = "plot_dblclick", 
     hover = "plot_hover", 
     brush = "plot_brush"), 

verbatimTextOutput("info"), 

# Application title 
titlePanel("mpg"), 


sidebarLayout(
sidebarPanel(
    selectInput(inputId = "var1", 
       label = "Choose x variable", 
       choices = 
       names(mpg) 
), 
    uiOutput('Var1Slider'), 

    br(), 
    selectInput(inputId = "var2", 
       label = "Choose y variable", 
       choices = 
       names(mpg)[sapply(mpg, class) != "character"]) 
), 

mainPanel(
    plotOutput("distPlot") 
) 
) 
)) 

そして、私のserver.Rは、次のようになります:

私ui.Rは、このようになります

 paste0(
     "click: =", xy_str(input$plot_click), 
     "dblclick: =", xy_str(input$plot_dblclick), 
     "hover: =", xy_str(input$plot_hover), 
     "brush: =", xy_range_str(input$plot_brush) 
    ) 

:あなたとあなたのpaste0機能を交換する場合

server <- function(input,output){ 

    output$distPlot <- renderPlot({ 

    # browser() 

if(typeof(mpg[[input$var1]]) == "character") 
{ 
    ggplot(mpg) + 
    xlab(input$var1) + 
    ylab(input$var2) + 
    ggtitle(paste("Plot", input$var1, "vs", input$var2)) + 
    geom_boxplot(mapping = 
        aes_string(x = input$var1, 
           y = input$var2)) 
} 

else 
{ 
    mpg %>% 
    filter(get(input$var1) >= input$Var1Slide[1]) %>% 
    filter(get(input$var1) <= input$Var1Slide[2]) %>% 
    ggplot() + 
    xlab(input$var1) + 
    ylab(input$var2) + 
    ggtitle(paste("Plot", input$var1, "vs", input$var2)) + 
    geom_point(mapping = 
       aes_string(x = input$var1, 
          y = input$var2)) 
} 
}) 

output$Var1Slider <- renderUI({ 

# browser() 

if(typeof(mpg[[input$var1]]) == "character") 
{ 
    return(NULL) 
} 
else 
{ 
    sliderInput('Var1Slide', 
       label = paste("selected:",input$var1), 
       min = min(mpg[[input$var1]]), 
       max = max(mpg[[input$var1]]), 
       value = c(min(mpg[[input$var1]]),max(mpg[[input$var1]])), 
       step = range(mpg[[input$var1]])/5) 
} 

xy_str <- "" 
if(is.null(e)) return("NULL\n") 
xy_str <- paste0("x=", round(e$x, 1), " y=", round(e$y, 1), "\n") 

xy_range_str <- "" 
if(is.null(e)) return("NULL\n") 
xy_range_str <- paste0("xmin=", round(e$xmin, 1), " xmax=", round(e$xmax, 1), 
     " ymin=", round(e$ymin, 1), " ymax=", round(e$ymax, 1)) 

    paste0 
    (
    "click: " = xy_str(input$plot_click), 
    "dblclick: " = xy_str(input$plot_dblclick), 
    "hover: " = xy_str(input$plot_hover), 
    "brush: " = xy_range_str(input$plot_brush) 
) 

    } 
) 
} 
+1

クリックして達成しようとしているのは、 'paste0()'の中で= xy_str(input $ plot_click)ですか? – PoGibas

答えて

2

その特定のエラーを修正します。私は、ブラケットが別の行にあるので、paste0が関数として登録されているとは思わない。また、関数の各引数の間にカンマが必要である。

関連する問題