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