shinyR:仅在textInput更改时调用函数,但在textInput字段为空/ NA时不调用

时间:2015-10-07 15:34:12

标签: r shiny

我想在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的顶部,我仍然收到错误消息。所以这是一个非常实际的问题,我尝试了很多解决方法。 如果输入已更改为合理值,我如何才能调用该函数?为什么所有这些检查我都尝试过失败?

1 个答案:

答案 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())
    })
  })
)