R 中的复选框输入服务器问题
checkboxinput server issues in R
我想在我的 UI 中有一个复选框,它将在我的服务器中充当 if 语句,但我不确定如何在服务器中正确编码该部分。在此示例中,我希望在选中该框时输出图表。
这是我的代码
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
plotOutput("Graphw")
)
)
)
)
server <- function(input, output) {
if(input$EF){
X <- function(a,b,c){
plot(c(a,b),c(b,c))
}
}
OPw <- reactiveValues()
OPw$PC <- X(5,10,15)
output$Graphw <- renderPlot({
OPw$PC
})
}
shinyApp(ui = ui, server = server)
我需要添加某种反应值,但我不确定在哪里。任何帮助将不胜感激
我认为您可以不使用 reactiveValues
来完成此操作。将函数X
设为独立函数,可以在renderPlot
.
下调用
library(shiny)
X <- function(a,b,c){
plot(c(a,b),c(b,c))
}
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
plotOutput("Graphw")
)
)
)
)
server <- function(input, output) {
output$Graphw <- renderPlot({
if(input$EF){
X(5,10,15)
}
})
}
shinyApp(ui = ui, server = server)
如果有效边界需要一些时间来绘制,我们可以使用 conditionalPanel
来显示或隐藏 plotOutput
而不是每次按下 checkboxInput
时使用 re-rendering .
library(shiny)
X <- function(a, b, c) {
plot(c(a, b), c(b, c))
}
library(shiny)
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
conditionalPanel(
condition = "input.EF == true",
plotOutput("Graphw")
)
)
)
)
)
server <- function(input, output) {
output$Graphw <- renderPlot({
X(5, 10, 5)
})
}
shinyApp(ui = ui, server = server)
另一个使用 reactiveValues
和 ggplot
的版本
library(shiny)
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
conditionalPanel(
condition = "input.EF == true",
plotOutput("Graphw")
)
)
)
)
)
server <- function(input, output) {
X <- function(a, b, c) {
ggplot(mapping = aes(x = c(a, b), y = c(b, c))) +
geom_point()
}
OPw <- reactiveValues(PC = NULL)
observe({
OPw$PC <- X(5, 10, 5)
})
output$Graphw <- renderPlot({
OPw$PC
})
}
shinyApp(ui = ui, server = server)
我想在我的 UI 中有一个复选框,它将在我的服务器中充当 if 语句,但我不确定如何在服务器中正确编码该部分。在此示例中,我希望在选中该框时输出图表。
这是我的代码
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
plotOutput("Graphw")
)
)
)
)
server <- function(input, output) {
if(input$EF){
X <- function(a,b,c){
plot(c(a,b),c(b,c))
}
}
OPw <- reactiveValues()
OPw$PC <- X(5,10,15)
output$Graphw <- renderPlot({
OPw$PC
})
}
shinyApp(ui = ui, server = server)
我需要添加某种反应值,但我不确定在哪里。任何帮助将不胜感激
我认为您可以不使用 reactiveValues
来完成此操作。将函数X
设为独立函数,可以在renderPlot
.
library(shiny)
X <- function(a,b,c){
plot(c(a,b),c(b,c))
}
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
plotOutput("Graphw")
)
)
)
)
server <- function(input, output) {
output$Graphw <- renderPlot({
if(input$EF){
X(5,10,15)
}
})
}
shinyApp(ui = ui, server = server)
如果有效边界需要一些时间来绘制,我们可以使用 conditionalPanel
来显示或隐藏 plotOutput
而不是每次按下 checkboxInput
时使用 re-rendering .
library(shiny)
X <- function(a, b, c) {
plot(c(a, b), c(b, c))
}
library(shiny)
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
conditionalPanel(
condition = "input.EF == true",
plotOutput("Graphw")
)
)
)
)
)
server <- function(input, output) {
output$Graphw <- renderPlot({
X(5, 10, 5)
})
}
shinyApp(ui = ui, server = server)
另一个使用 reactiveValues
和 ggplot
library(shiny)
ui <- fluidPage(
titlePanel("title"),
sidebarLayout(
sidebarPanel(
checkboxInput("EF", "Efficient Frontier")
),
mainPanel(
fluidRow(
align = "center",
conditionalPanel(
condition = "input.EF == true",
plotOutput("Graphw")
)
)
)
)
)
server <- function(input, output) {
X <- function(a, b, c) {
ggplot(mapping = aes(x = c(a, b), y = c(b, c))) +
geom_point()
}
OPw <- reactiveValues(PC = NULL)
observe({
OPw$PC <- X(5, 10, 5)
})
output$Graphw <- renderPlot({
OPw$PC
})
}
shinyApp(ui = ui, server = server)