0

我们的 RShiny 服务器中有如下内容:

output$our_graph <- renderHighchart({
  our_data <- get_our_data() # this is a reactive
  if(nrow(our_data) == 0) {
    return('Sorry no data')
  }

  our_return_graph <- highchart(...stuff)
  return(our_return_graph)
})

目前这会引发一个错误,因为我们似乎不允许从内部返回字符串“Sorry no data” renderHighchart(这是有道理的)。有一个更好的方法吗?

编辑:我不认为我们可以有条件地our_graph从 UI 呈现整个,因为图形是否呈现取决于get_our_data()返回的内容,这在 UI 中不可用。如果可能,我们希望在服务器端处理这个问题。

4

1 回答 1

1

我将这个 if 语句移到渲染函数上,正是我添加了一个validate(need(组合。


data <- reactive({
  our_data <- get_our_data() # this is a reactive
  validate(need(nrow(our_data) == 0, "Please select a data set"))
  our_data
})


output$our_graph <- renderHighchart({
  data() ...
  our_return_graph <- highchart(...stuff)
  return(our_return_graph)
})

来源:https ://shiny.rstudio.com/reference/shiny/0.14/validate.html

您可以检查shinyalert与用户的清晰和描述性通信。

于 2021-06-17T18:37:20.933 回答