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

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

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

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

Проблема началась, когда я добавил 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)
      }

    )
  }

}
0
Artie Ladie 6 Июн 2018 в 18:12

1 ответ

Лучший ответ

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

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

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

    output$col <- { 
      renderPrint(outuputdata())
    }
    observe({
      message <- paste(outuputdata(),"\n")
      cat(message,file=colorfile, append=TRUE)
      })
   }
1
Carlos Santillan 6 Июн 2018 в 16:05