Как вернуть значение из R Shiny Session - PullRequest
0 голосов
/ 08 июня 2018

Я прочитал это проверенное решение из этого вопроса , но не сработал.

CherryPickPalette - это функция R, которая принимает от 2 до 3 цветовых палитр, позволяет пользователю выбирать свои собственныецвета, сохраняет результаты в файл, сканирует результаты в переменную.

К сожалению, я не могу прочитать переменную.

Весь сценарий R здесь

Когда я выполняю скрипт и выхожу из него, он говорит количество прочитанных элементов (на основе выбора пользователя)

> CherryPickPalette("BiryaniRice","Kulfi","Haveli2")

Listening on http://127.0.0.1:4346
Read 7 items

Однако, если я ввожу customcolors, я получаю ошибку

> customcolors
Error: object 'customcolors' not found

Ниже приведена функция ... пожалуйста, руководство.

CherryPickPalette <- function (name, name2=NULL, name3=NULL){

  # error checking    

  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){
        outuputdata<-  reactive({
          input$col
        })

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

          # trying to return customcolors outside of shiny
          stopApp(customcolors)
          customcolors
          ######
        })
      }
    )
  }
}

1 Ответ

0 голосов
/ 08 июня 2018

После запуска и закрытия приложения:

customcolors <- scan("colorfile.txt", character())
customcolors

# [1] "#a96337" "#f0ecb0" "#4a4000" "#001a24"

Или запустите приложение с:

customcolors <- runApp(CherryPickPalette("BiryaniRice","Kulfi","Haveli2"))
...