Приложение Call R Shiny с аргументом - PullRequest
0 голосов
/ 08 июня 2018

Обновление, я пытался написать приложение, используя объект (объяснено здесь ), но я получаю ту же ошибку

Обновлена ​​внутренняя функция приложения

CustomPalette <- function(new_pal=NULL){
  if (interactive()){
    colorfile <- paste(getwd(),"colorfile.txt",sep="/")
    if (!file.exists(colorfile)){
      file.create(colorfile)
    }
    app <- list(
      ui = fluidPage(
        titlePanel("Cherry Pick Your Own Palette!"),
        sidebarPanel (hr(),
                      selectInput('col', 'Options', new_pal, multiple=TRUE, selectize=FALSE, size = 15)
        ),
        mainPanel(
          h5('Your custom colors',style = "font-weight: bold;"),
          fluidRow(column(12,verbatimTextOutput("col"))))
      ),
      server = function(input,output,session){
        outputdata<-  reactive({
          input$col
        })

        output$col <- { 
          renderPrint(outputdata())
        }
        session$onSessionEnded(function(){
          message <- paste(isolate(outputdata())," ")
          cat(message,file=colorfile, append=TRUE)
          customcolors <- scan(file=colorfile," ")
          stopApp(customcolors)
          customcolors
        })
      }
    )
  }

}

Iя пытаюсь вызвать R Shiny App с аргументом, например customcolors <- runApp(CustomPalette(new_pal = NULL))

Это запускает блестящее приложение, позволяющее пользователю выбирать отдельные цвета, которые приложение возвращает в виде вектора

К сожалению, devtools::check() выдает ошибку для всего скрипта R

> CherryPickPalette("GoldenTemple","AmritsariPedeWaliLassi")
Error in UseMethod("as.shiny.appobj", x) : 
  no applicable method for 'as.shiny.appobj' applied to an object of class "NULL"
Calls: CherryPickPalette -> runApp -> as.shiny.appobj
Execution halted

Ниже приведена функция CherryPickPalette, которая вызывает CustomPalette функцию, которая содержит блестящее приложение (также включено).

В конечном счете, пользователь должен иметь возможность выполнить CherryPickPalette(name, name2, name3), должно появиться блестящее приложение, пользователь должен выбрать любой цвет, который он хочет, и переменная должна быть сохранена и использована внутри всего скрипта.

# visible to user
CherryPickPalette <- function (name, name2=NULL, name3=NULL){

  ### snipped code

  customcolors <- runApp(CustomPalette(new_pal = NULL))

  customcolors

}

# hidden from user
CustomPalette <- function(new_pal){
  if (interactive()){
    colorfile <- paste(getwd(),"colorfile.txt",sep="/")
    if (!file.exists(colorfile)){
      file.create(colorfile)
    }
    shinyApp(
      ui = fluidPage(
        titlePanel("Cherry Pick Your Own Palette!"),
        sidebarPanel (hr(),
                      selectInput('col', 'Options', new_pal, multiple=TRUE, selectize=FALSE, size = 15)
        ),
        mainPanel(
          h5('Your custom colors',style = "font-weight: bold;"),
          fluidRow(column(12,verbatimTextOutput("col"))))
      ),
      server = function(input,output,session){
        outputdata<-  reactive({
          input$col
        })

        output$col <- { 
          renderPrint(outputdata())
        }
        session$onSessionEnded(function(){
          message <- paste(isolate(outputdata())," ")
          cat(message,file=colorfile, append=TRUE)
          customcolors <- scan(file=colorfile," ")
          stopApp(customcolors)
          customcolors
        })
      }
    )
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...