Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如果数字输入不满足条件,则显示即时通知_R_Shiny - Fatal编程技术网

R 如果数字输入不满足条件,则显示即时通知

R 如果数字输入不满足条件,则显示即时通知,r,shiny,R,Shiny,我有一个textInput,用户应该在其中输入一个数字,我检查它是否大于0。我使用textInput而不是numInput的原因是我不喜欢后者附带的箭头。该数字用于进一步计算。我的目标是在输入数小于或等于0时向用户显示即时通知。我所说的即时是指一旦用户在输入字段外单击。我尝试了以下操作,但无论输入是什么,都不会显示任何通知: library(shiny) ui <- fluidPage(textInput("num_ipt", "enter positive number")) ser

我有一个textInput,用户应该在其中输入一个数字,我检查它是否大于0。我使用textInput而不是numInput的原因是我不喜欢后者附带的箭头。该数字用于进一步计算。我的目标是在输入数小于或等于0时向用户显示即时通知。我所说的即时是指一旦用户在输入字段外单击。我尝试了以下操作,但无论输入是什么,都不会显示任何通知:

library(shiny)

ui <- fluidPage(textInput("num_ipt", "enter positive number"))

server <- function(input, output, session) {

  pos_num <- reactive({
    validate(need(as.numeric(input$num_ipt) > 0), "Enter positive number")
      as.numeric(input$num_ipt)})}

shinyApp(ui, server)

这不起作用,因为消息必须是need参数,而在代码中它是validate参数

library(shiny)

ui <- fluidPage(textInput("num_ipt", "enter positive number"),
                verbatimTextOutput("numb"))

server <- function(input, output, session) {

  pos_num <- reactive({
    validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
    as.numeric(input$num_ipt)
  })

  output$numb <- renderText(pos_num())

}

shinyApp(ui, server)

如果您不介意添加其他依赖项,请尝试在UI中添加逐字逐句的ExtoutPutNumb,然后在服务器代码中的被动添加'output$numb'之后添加,这是显示此类通知的简便方法。页面末尾的示例应该足以让您开始。此外,shinyFeedback软件包也很好地显示了此类消息。@Joe我已经看到了您提到我的第二次编辑。如果在删除输出$numb时这不起作用,那可能是因为无功导体pos_num没有后代,那么它永远不会执行。在哪里可以找到shinyFeedback?我尝试了CRAN和devtools::install_githubshinyFeedback,但都没有成功。@Joe它在CRAN上:
library(shiny)

ui <- fluidPage(textInput("num_ipt", "enter positive number"))

server <- function(input, output, session) {

  pos_num <- reactive({
    validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
    as.numeric(input$num_ipt)})}

shinyApp(ui, server)
library(shiny)

ui <- fluidPage(textInput("num_ipt", "enter positive number"),
                verbatimTextOutput("numb"))

server <- function(input, output, session) {

  pos_num <- reactive({
    validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
    as.numeric(input$num_ipt)
  })

  output$numb <- renderText(pos_num())

}

shinyApp(ui, server)
library(shiny)
library(shinyFeedback)

ui <- fluidPage(
  useShinyFeedback(),
  textInput("num_ipt", "enter positive number", value="1"),
  verbatimTextOutput("numb")
)

server <- function(input, output, session) {

  observeEvent(input$num_ipt, {
    feedbackWarning(
      inputId = "num_ipt",
      condition = is.na(as.numeric(input$num_ipt)) || !(as.numeric(input$num_ipt) > 0),
      text = "Enter a positive number !"
    )
  })

  pos_num <- reactive({
    validate(need(as.numeric(input$num_ipt) > 0, message=FALSE))
    as.numeric(input$num_ipt)
  })

  output$numb <- renderText(pos_num())

}

shinyApp(ui, server)