R有光泽:在使用绘图点击之前隐藏NA以在条件面板中返回值

时间:2017-04-25 21:05:08

标签: r plot shiny

我正在使用plot_click来查询Shiny中的图形,并希望条件面板显示2位信息。但是目前,条件面板显示“NA”,直到我执行情节点击,我如何让它消失?

library(ggplot2)
library(shiny)
# make some data
df <- data.frame(ID=c(1,2),x=c(33,7),y=c(50,16),name=c("Tom","Bill"),link=c("https://mylink.com","https://anotherlink.com"), stringsAsFactors=FALSE)

# Shiny app

ui <- basicPage(
    plotOutput("plot", click = "plot_click"),
  verbatimTextOutput("selection"),
  conditionalPanel("!is.na(output.nametext)",
                   h4(textOutput("nametext")),
                   h4(textOutput("urltext")))
)

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

  output$plot <- renderPlot({
   ggplot(data=df,aes(x=x,y=y))+
      geom_point()+
      scale_x_continuous(limits = c(0, 68))+
      scale_y_continuous(limits = c(0, 52.5))
  })

  output$selection <- renderPrint({
    nearPoints(df, input$plot_click)
  })

  info <- reactive({

    t <- as.data.frame(nearPoints(df, input$plot_click))
    s <- t[1,4]
    u <- t[1,5]
    list(s=s,u=u)

  })

  output$nametext <- renderText({info()$s})
  output$urltext <- renderText({info()$u})
}

runApp(shinyApp(ui, server), launch.browser = TRUE)

在用户界面中的conditionalPanel中,我尝试过!is.na(output.nametext)output.nametext != nulloutput.nametext==trueplot_click==trueplot_click!=null等等。在执行点击之前,他们都没有删除存在的NA。

1 个答案:

答案 0 :(得分:1)

一种解决方案是简单地使用:

  output$nametext <- renderText({
    if(!is.na(info()$s)){
      info()$s      
    }
  })

您还可以使用空格通知用户他应该点击一个点来查看信息:

  output$urltext <- renderText({
    if(!is.na(info()$s)){
      info()$u
    }else{
      print("Click on a point to get additional information")
    }
  })