闪亮的被动if语句在输出中给出“[1]”。怎么删除这个?

时间:2017-08-18 07:40:55

标签: r shiny shiny-server

我有一个闪亮的服务器代码,其中我有一个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"
 }
  })

})

2 个答案:

答案 0 :(得分:2)

这应该让你继续前进:

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 - &gt;这就是为什么你得到双引号和[1],由于打印格式。

enter image description here

答案 1 :(得分: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)

运行

enter image description here

enter image description here