Как включить опции в selectInput () из локального фрейма данных без предварительной загрузки его в R-память - PullRequest
0 голосов
/ 20 мая 2018

Я не могу запустить ShinyApp, если не предварительно загрузить Data из server.

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

> runApp('example.R')
Error in lapply(obj, function(val) { : object 'Data' not found

Работает нормально, если я выбираю весь код и запускаю его.

Может кто-нибудь объяснить, почему и как это исправить.

Вот мой код:

library(shiny)
library(ggplot2)
ui <- fluidPage(
  column(12,selectInput("id_1","Choose the x axis",Data$Species)),
  column(12,plotOutput("plot"))
)

server <- function(input, output, session) {
  Data=iris
  output$plot=renderPlot(
    ggplot(Data[Data$Species==input$id_1,],aes(x=Sepal.Length,y=Petal.Length))+geom_point()+
      labs(x="Sepal Length",y="Petal Length",title=paste0("Sepal Length vs Petal Length for ",input$id_1))+
      theme(panel.background=element_blank())
  )
  }
shinyApp(ui = ui, server = server)
runApp('example.R')

1 Ответ

0 голосов
/ 20 мая 2018

Вы должны поместить selectInput в функцию сервера внутри функции renderUI, так как она должна реагировать на выбранные входные данные.Это не работает в пользовательском интерфейсе.И вы должны включить req(input$id_1) в функцию рендеринга, чтобы она ожидала, пока что-то не будет выбрано.

library(shiny)
library(ggplot2)
ui <- fluidPage(
  column(6,uiOutput("uimod")),
  column(6,plotOutput("plot"))
)

server <- function(input, output, session) {
  Data=iris

  output$uimod <- renderUI({
    selectInput("id_1","Choose the x axis",Data$Species)
  })
  output$plot=renderPlot({
    req(input$id_1)
    ggplot(Data[Data$Species==input$id_1,],aes(x=Sepal.Length,y=Petal.Length))+
      geom_point()+
      labs(x="Sepal Length",y="Petal Length",
           title=paste0("Sepal Length vs Petal Length for ",input$id_1))+
      theme(panel.background=element_blank())
  })
}
shinyApp(ui = ui, server = server)

А зачем вам нужен runApp('example.R')?Какой пример .R должен работать там?Если вы хотите запустить свой блестящий приложение, функция shinyApp(ui, server) в порядке.Если вы выберете и запустите весь код, который вы здесь показываете, R никогда не придет к строке runApp (), так как он откроет блестящую строку приложения 1 раньше и поэтому не выполнит последнюю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...