闪亮的多个IF if语句

时间:2019-12-23 21:56:38

标签: if-statement ggplot2 shiny

我想问一下如何处理R if中的多个elseshiny语句, 当我尝试编写一些简单的脚本,出于某种原因,这些脚本会根据选择绘制分布图时,第三个脚本无法正常工作,我可以很清楚地判断这是由于发亮还是因为语句语法错误。

代码如下:

library(shiny)
library(ggplot2)


ui <- fluidPage(title = "zkoušíme shiny", 


  sliderInput(inputId = "slider",
              label = "Nastavené honot",
              value = 500, min = 250, max = 5000, step = 25),

  numericInput(inputId = "bin_nums", label = "Zadejte počet binu", 
              value = 15, min = 15, max = 40, step = 5, width = "100px"),

  selectInput(inputId = "colsel", label = "Hodnoty barev", 
               choices = c("red", "dodgerblue", "green"), selected = "red", width = "115px"),


  selectInput(inputId = "dist", label = "Select Distribution", 
              choices = c("Normal", "Exponecial", "Poisson"), selected = "Normal", width = "100px"),


  plotOutput("hist")

  )



server <- function(input, output) {
  output$hist <- renderPlot({
    title <- "Hodnoty histogramu"
    set.seed(101)
    DIST <- input$dist

    if (DIST == "Normal") {
    df <- rnorm(input$slider)
    df <- data.frame(df)
    ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "white")
}

    else {
      if (DIST == "Exponecial") {
        df <- rexp(n = input$slider)
        df <- data.frame(df)
        ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "white")
        }
      }

    else{
      df <- rexp(n = input$slider)
      df <- data.frame(df)
      ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "red") 
    }
  }

    })
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

else应该与}在同一行。另外,您还有一个额外的}

library(shiny)
library(ggplot2)


ui <- fluidPage(title = "zkoušíme shiny", 
  sliderInput(inputId = "slider",
              label = "Nastavené honot",
              value = 500, min = 250, max = 5000, step = 25),
  numericInput(inputId = "bin_nums", label = "Zadejte počet binu", 
              value = 15, min = 15, max = 40, step = 5, width = "100px"),
  selectInput(inputId = "colsel", label = "Hodnoty barev", 
               choices = c("red", "dodgerblue", "green"), selected = "red", width = "115px"),
  selectInput(inputId = "dist", label = "Select Distribution", 
              choices = c("Normal", "Exponecial", "Poisson"), selected = "Normal", width = "100px"),
  plotOutput("hist")
)


server <- function(input, output) {
  output$hist <- renderPlot({
    title <- "Hodnoty histogramu"
    set.seed(101)
    DIST <- input$dist

    if (DIST == "Normal") {
        df <- rnorm(input$slider)
        df <- data.frame(df)
        ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "white")
    } else {
      if (DIST == "Exponecial") {
        df <- rexp(n = input$slider)
        df <- data.frame(df)
        ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "white")
      } else{
        df <- rexp(n = input$slider)
        df <- data.frame(df)
        ggplot(df, aes(df)) + geom_histogram(bins = input$bin_nums, fill = input$colsel, color = "red") 
      }
    }

  })
}

shinyApp(ui = ui, server = server)