初学者到R,在这里闪亮!试图做一个最小的工作示例......我想检查一个无功输入值的条件.我究竟做错了什么?
library(shiny)
ui<-fluidPage(
numericInput(inputId="a", label=NULL, value=0),
textOutput(outputId="out")
)
server <- function(input, output) {
x <- reactive(input$a)
if (x() < 4)
{y<-1}
else
{y<-0}
output$out <- renderText({y})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
错误消息:
没有活动的反应上下文,不允许操作.(你试图做一些只能在反应式表达式或观察者内部完成的事情.)
你只需要reactive与你一起使用,if以便闪亮知道什么时候y改变x.
library(shiny)
ui<-fluidPage(
numericInput(inputId="a", label=NULL, value=0),
textOutput(outputId="out")
)
server <- function(input, output) {
x <- reactive(input$a)
y <- reactive( if (x()<4) 1 else 0 )
output$out <- renderText({ y() })
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
John Paul的上述答案当然是可以接受的,但我认为你可能希望看到另一种方式作为你学习过程的一部分.我会让StackOverflow排除哪个更合适.
library(shiny)
ui<-fluidPage(
numericInput(inputId="a", label=NULL, value=0),
textOutput(outputId="out")
)
server <- function(input, output) {
state <- reactiveValues()
observe({
state$x <- input$a
state$y <- ifelse(state$x < 4, 1, 0)
})
output$out <- renderText({ state$y })
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)