У меня есть функция, которая запускает блестящее приложение R, позволяющее пользователям выбирать различные цвета.
Но что, если пользователь передумает и отменит выбор цвета.
Поэтому я хочу сохранить вывод пользователяв файл после завершения R интерпретатора.
Тем не менее, каждый раз, когда запускается интерпретация файла, файл сбрасывается, так что он может принять новую информацию.
Пытался session$onSessionEnded
, но выдает ошибку при выполнении
Listening on http://127.0.0.1:7431
Warning: Error in .getReactiveEnvironment()$currentContext: Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
42: stop
41: .getReactiveEnvironment()$currentContext
40: .dependents$register
39: outuputdata
37: callback [c:\RanglaPunjab/R/RanglaPunjab.R#237]
Ниже приведен код и пример ввода.Это весь скрипт R
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){
outuputdata<- reactive({
input$col
})
output$col <- {
renderPrint(outuputdata())
}
session$onSessionEnded(function(){
message <- paste(outuputdata(),"\n")
cat(message,file=colorfile, append=TRUE)
})
}
)
}
}
CherryPickPalette("BiryaniRice","Kulfi","Haveli2")