我想在textInput的值发生变化时随时调用函数,除非textInput为空/非数字。以下是我尝试过的内容:
if(!is.na(as.numeric(input$input1))){
f(as.numeric(input$input1))
}
if(!is.null(as.numeric(input$input1))){
f(as.numeric(input$input1))
}
if(as.numeric(input$input1) && as.numeric(input$input1) > 0){
f(as.numeric(input$input1))
}
我还尝试将默认值放入函数定义中:
f <- function(x = .3){
...
}
在所有这些尝试中,当使用正在更改值时,函数仍然被调用,因此如果我在f
中打印值,我会得到:
Value is NA
用于删除旧值但没有时间输入合理值时发生的这些函数调用。那怎么办?用户输入完成后如何调用该功能?
我也尝试添加:
if(is.NA(x)){
x = .3
}
到f
的顶部,我仍然收到错误消息。所以这是一个非常实际的问题,我尝试了很多解决方法。 如果输入已更改为合理值,我如何才能调用该函数?为什么所有这些检查我都尝试过失败?
答案 0 :(得分:0)
尝试下次提供最小的工作示例。我认为在应用程序的render *部分验证可能会起作用,而不是任何if语句。
library(shiny)
shinyApp(
shinyUI(
fluidPage(
textInput("text", "text"),
verbatimTextOutput("text.f")
)
),
shinyServer(function(session, input, output) {
output$text.f <- renderPrint({
validate(need(input$text != "", ""))
print(Sys.time())
})
})
)