我想使用Shiny写一个Gui
和Server
,以便读取一个整数,点击底部后我的函数应该调用,输出应该出现在仪表板中(闪亮 - 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
中的函数?
答案 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")
)