Предупреждение jsonlite в блестящем цвете: вход в asJSON (keep_vec_names = TRUE) - это именованный вектор

Рассмотрим это блестящее приложение:

library(shiny)
library(ggplot2)

ui <- fluidPage(
  radioButtons("type", "Type of plot", choices = c("density", "boxplot")),
  plotOutput("plot")
)

server <- function(input, output){
  output[["plot"]] <- renderPlot({
    if(input$type == "density"){
      ggplot(iris, aes(Sepal.Length)) + geom_density()
    }else{
      ggplot(iris, aes(x = "", y = Sepal.Length)) + geom_boxplot()
    }
  })
}

shinyApp(ui, server)

Когда я выбираю переключатель "boxplot", в консоли R появляется это сообщение из пакета jsonlite:

Входными данными asJSON (keep_vec_names = TRUE) является именованный вектор. В будущей версии jsonlite эта опция не будет поддерживаться, а именованные векторы будут преобразованы в массивы вместо объектов. Если вы хотите выводить объект JSON, используйте вместо этого именованный список. Смотрите? ToJSON.

Я хотел бы понять, что происходит. Что мне делать, чтобы не получить это сообщение? Боюсь, что в будущей версии jsonlite мое приложение выйдет из строя.


person Stéphane Laurent    schedule 18.10.2019    source источник
comment
Кажется, проблема вызвана x = "", попробуйте удалить аргумент, и сообщение не появляется (или используйте вместо этого x = 0).   -  person ismirsehregal    schedule 18.10.2019
comment
@ismirsehregal Спасибо, вы правы. Я могу убрать этот аргумент и добавить scale_x_continuous(breaks = NULL). Но этого предупреждения не было с предыдущей версией shiny. Я отчитаюсь.   -  person Stéphane Laurent    schedule 18.10.2019
comment
Вы где-то сообщали о проблеме? Я сталкиваюсь с тем же.   -  person Bob Jansen    schedule 06.03.2020


Ответы (1)


Печать вашего сюжета вместо возврата сюжетного объекта должна работать:

library(shiny)
library(ggplot2)

ui <- fluidPage(
  radioButtons("type", "Type of plot", choices = c("density", "boxplot")),
  plotOutput("plot")
)

server <- function(input, output){
  output[["plot"]] <- renderPlot({
    if(input$type == "density"){
      ggplot(iris, aes(Sepal.Length)) + geom_density()
    }else{
      print(ggplot(iris, aes(x = "", y = Sepal.Length)) + geom_boxplot())
    }
  })
}

shinyApp(ui, server)

Отличный представитель, спасибо. Недавно я столкнулся с этой проблемой, и это решение сработало для моих целей. Надеюсь, это поможет кому-то еще с той же проблемой.

В shiny также есть несколько открытых проблем, связанных с этим: https://github.com/rstudio/shiny/issues/2673

person v44k3    schedule 22.09.2020