单击底部运行自己的功能内闪亮

时间:2017-11-23 19:27:00

标签: r shiny

我想使用Shiny写一个GuiServer,以便读取一个整数,点击底部后我的函数应该调用,输出应该出现在仪表板中(闪亮 - GUI)

if (interactive()) {

  ui <- fluidPage(
    numericInput("obs", "your number:", 10, min = 1),
    actionButton("do", "Print the Result")
  )
  # my function
  calculate<-function(x){y<-x*x
  if(y<24){print("the value is less than 5")}
  else 
  {print("the value is greater than 5")}
  }
  # server
  server <- function(input, output, session) {
    observeEvent(input$do, {
      output$value <- renderText({ input$calculate(obs) })
    })
  }
  # call server
  shinyApp(ui, server)
}

我只是在一个简单的例子中尝试过,但代码不起作用! 如何通过单击动作底部来调用server中的函数?

1 个答案:

答案 0 :(得分:3)

你想让你的服务器像这样

server <- function(input, output, session) {
reactiveText <- eventReactive({
  input$do
},{
  calculate(input$obs)
})
output$value <- renderText({reactiveText() })
}

一般来说,你想要像这样(事件)Reactive用于输出到渲染并且是惰性求值。这意味着只有在UI中显示对象

后才会对它们进行评估

观察(事件)是急切评估的,这意味着在更改因变量时会立即评估。适用于updateInput,showModal或您希望立即进行的UI的其他更改。

您不希望在任何被动或观察功能中输出任何分配。

但当然,一旦掌握了所有规则 - 规则就会被打破;-)

<强> PS

要查看cour代码的结果,您需要将输出Objekt添加到您的UI中

ui <- fluidPage(
  numericInput("obs", "your number:", 10, min = 1),
  actionButton("do", "Print the Result"),
  textOutput("value")
)