闪亮的反应式 if 语句在输出中给出“[1]”。如何删除这个?

shiny reactive if statement giving a "[1]" in output. how to remove this?

我有一个闪亮的服务器代码,其中有一个 for 循环来检查用户是输入了 9 还是什么都不输入。但是每当用户输入 9 或什么都不输入时,我将得到一个包含 [1] 以及 ""

的输出

如果我什么都不输入,输出是

[1]""

如果我输入 9 输出是

[1]"You are not working good"

如何避免这个 [1] 以及双引号?

下面是我的server.R代码

library(shiny)

shinyServer(function(input, output) {

output$name <- renderText({input$name})


output$whrs<-renderPrint({
if (input$whrs == "") {
  ""
} else  
if(input$whrs == 9)  {
  "You are not working good"
 }
  })

})

这应该让你继续:

library(shiny)

server <- function(input, output) {

  output$whrs<-renderText({
    if (input$text == "") {
      ""
    } else  
      if(input$text == 9)  {
        "You are not working good"
      }
  })

}

ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
    ),
    mainPanel(selectInput("text","Enter text",choices=c("","1","9")),
              textOutput("whrs"))
  )
))

shinyApp(ui = ui, server = server)

您没有提供完整的代码,并且您已经提供的代码中存在一些错误,这就是为什么我刚刚创建了一个小示例,应该可以进一步帮助您。

首先,您应该使用 renderText 而不是 renderPrint --> 这就是为什么您使用双引号和 [1],因为打印格式。

另一种选择是使用 switch

ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
    ),
    mainPanel(selectInput("text","Enter text",choices=c("","1","9")),
              textOutput("whrs"))
  )
))


server <- function(input, output) {

  res <- reactive({
    switch(input$text, 
      `""` = "",     
      `9` =  "You are not working good",
      `1`  = NA
    )

})

  output$whrs<-renderText({
         res()
    })
}



shinyApp(ui = ui, server = server)

运行