我缺少Rif语句的一些基础知识,尤其是如何在Shiny应用程序的服务器块中使用它们。我只是想为四个图表中的每一个都有一个单选按钮,但是我认为我的if语句结构失败了。只有最后一个单选按钮显示图。我对ifelse()
较为熟悉,但是正在使用另一个的Shiny模板-我可以在这里使用ifelse()
吗?另外,对于如何将输入数据(data.frame
创建和绘图定义)添加到服务器块中的任何帮助,也将不胜感激-我在那里也缺少一些东西。
library(shiny)
library(ggplot2)
x <- seq(1:100)
y <- rnorm(100)
df <- data.frame(x,y)
p1 <- ggplot(df, aes(x,y)) + geom_line()
p2 <- ggplot(df, aes(x,y)) + geom_point()
p3 <- ggplot(df, aes(x,y)) + geom_bar(stat = "identity")
p4 <- ggplot(df, aes(x,y)) + geom_smooth()
ui <- fluidPage(theme=shinytheme("sandstone"),
fluidRow(
column(width=8,
radioButtons("radioInput", "Radio Button Header", choices =
c("name of plot 1 for user" = "plot 1",
"name of plot 2 for user" = "plot 2",
"name of plot 3 for user" = "plot 3",
"name of plot 4 for user" = "plot 4"
))
)
),
plotOutput("distPlot", height="700px")
)
server <- function(input, output) {
output$distPlot <- renderPlot({
if (input$radioInput == "plot 1") {p1}
if (input$radioInput == "plot 2") {p2}
if (input$radioInput == "plot 3") {p3}
if (input$radioInput == "plot 4") {p4}
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:0)
您有两个选择,或者在绘制时放置function matchType (value, type) {
if (value === type) return value;
return type.includes(value)
? value
: null;
}
console.log(matchType("foo", "foo"));
console.log(matchType("foo", ["foo", "bar"]));
console.log(matchType("foo", ["blah", "bar"]));
命令:
print
或者您要使用server <- function(input, output) {
output$distPlot <- renderPlot({
if (input$radioInput == "plot 1") {print(p1)}
if (input$radioInput == "plot 2") {print(p2)}
if (input$radioInput == "plot 3") {print(p3)}
if (input$radioInput == "plot 4") {print(p4)}
})
}
条语句:
if/else