Ошибка с renderPlot, но не renderPrint при использовании блестящей - PullRequest
1 голос
/ 19 марта 2020

Пытаясь помочь этому человеку , я застрял с проблемой shinyjs. Я хотел бы отобразить график, когда я нажимаю на прямоугольник в приведенном ниже коде.

В приведенном ниже примере при щелчке на большом зеленом прямоугольнике печатается текст, как и должно быть:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  div(id = "01", 
      style = "cursor:pointer; height: 300px; width: 300px; text-align: center; background-color: green", 
      HTML("01")),
  textOutput("plot")
)

server <- function(input, output) {

  onclick(id = "01", {
    output$plot <- renderPrint({
      print("foo")
    })
  })
}

shinyApp(ui, server)

Однако, если я пытаюсь заменить печать на сюжет, я сталкиваюсь с ошибкой:

Предупреждение: ошибка в origRenderFun c: отсутствует аргумент "name", по умолчанию нет

Вот код, который создает ошибку:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  div(id = "01", 
      style = "cursor:pointer; height: 300px; width: 300px; text-align: center; background-color: green", 
      HTML("01")),
  plotOutput("plot")
)

server <- function(input, output) {

  onclick(id = "01", {
    output$plot <- renderPlot({
      plot(mtcars)
    })
  })
}

shinyApp(ui, server)

Я полагаю, что проблема связана с функцией onclick, так как я не могу воспроизвести эту ошибку, если поставить renderPlot за пределами onclick. Кто-нибудь знает, как это решить?

1 Ответ

0 голосов
/ 19 марта 2020

Я попытался поместить plot () вне onclick (), и это работает

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  div(id = "01", 
      style = "cursor:pointer; height: 300px; width: 300px; text-align: center; background-color: green", 
      HTML("01")),
  fluidRow(plotOutput("plot"))
)

server <- function(input, output) {

  p <- output$plot <- renderPlot(plot(mtcars))

  onclick("01", p)
...