【发布时间】:2015-08-31 04:47:15
【问题描述】:
当我有传递给renderPlot(或其他渲染函数)的反应数据时,数据通常最初是空的,直到发生某些操作。默认渲染通常会在操作发生之前在应用中显示错误,因为数据为空,即
错误“x”必须是数字
在这个例子中。是否有一些标准方法可以让渲染函数在没有数据时起作用(如果出现错误或只是空白则可能不渲染)?我知道我可能会很麻烦地构造所有反应值,这样输出就会是空白的,但这似乎是不必要的工作。
rMarkdown 中的示例闪亮
---
title: "Example"
runtime: shiny
output: html_document
---
```{r}
shinyApp(
shinyUI(fluidPage(
inputPanel(
numericInput("n", "n", 10),
actionButton("update", "Update")
),
plotOutput("plot")
)),
shinyServer(function(input, output) {
values <- reactiveValues()
values$data <- c()
obs <- observe({
input$update
isolate({ values$data <- c(values$data, runif(as.numeric(input$n), -10, 10)) })
}, suspended=TRUE)
obs2 <- observe({
if (input$update > 0) obs$resume()
})
output$plot <- renderPlot({
dat <- values$data
hist(dat)
})
})
)
```
【问题讨论】:
-
如果您将 output$plot 放在隔离区中,它只会在第一次调用更新后创建。
-
这篇文章可能会有所帮助:stackoverflow.com/questions/34428130/…
标签: r shiny r-markdown