Сохранить вывод из Shiny в файл - PullRequest
0 голосов
/ 06 июня 2018

Я создаю функцию, которая запускает приложение блестящий.

Это позволит пользователю сделать несколько выборок.

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

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

Проблема началась, когда я добавил file.append(colorfile,output$col) в пределах глянцевого

Когда я запускаю блестящее приложение, я получаю сообщение об ошибке (конец вопроса - это код, а вот сценарий весь R )

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

Listening on http://127.0.0.1:7208
Warning: Error in $.shinyoutput: Reading objects from shinyoutput object not allowed.
  54: stop
  53: $.shinyoutput
  50: server [c:\RanglaPunjab/R/RanglaPunjab.R#230]
Error in `$.shinyoutput`(output, col) : 
  Reading objects from shinyoutput object not allowed.

Функция CherryPicker Palette

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

  if ((nargs() < 2) || (nargs() > 3)){
    stop("Enter 2 or 3 valid palettes. Run ListPalette() for list of palettes.")
  }
  if (nargs() == 2){
    new_pal <- MergePalette(name,name2)
  }
  else if (nargs() == 3){
    new_pal <- MergePalette(name,name2,name3)
  }

  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){
        output$col <- renderPrint(input$col)
        file.append(colorfile,output$col)
      }

    )
  }

}

1 Ответ

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

Функция file.append добавит один файл к другому.(не добавляйте текст в файл), взгляните на функции cat или sink

Мне кажется, что следующее работает

  server = function(input,output,session){
   outuputdata<-  reactive({
      input$col
    })

    output$col <- { 
      renderPrint(outuputdata())
    }
    observe({
      message <- paste(outuputdata(),"\n")
      cat(message,file=colorfile, append=TRUE)
      })
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...