我正在使用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 != null
,output.nametext==true
,plot_click==true
,plot_click!=null
等等。在执行点击之前,他们都没有删除存在的NA。
答案 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")
}
})