Сохраняйте новые пользовательские вводы и изменения в локальном файле на постоянной основе - PullRequest
0 голосов
/ 03 марта 2019

Я работаю с пакетом DTedit и хотел бы реализовать две функции.Я прилагаю пример кода из пакета github автора пакета.Я хотел бы реализовать две вещи:

  • - кнопка, которая сохраняет данные после любых новых дополнений или изменений в таблице в локальном файле.В идеале мы можем добавить все новые дополнения (или редакции) в существующий CSV-файл.Приложение будет на сервере rstudio, поэтому мы можем добавить этот файл в папку www.

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

Я пробовал несколько вариантов и посмотрел несколько учебных пособий в Интернете, но покаЯ не смог решить эти два вопроса.

library(shiny)
library(DTedit)

##### Create the Shiny server
server <- function(input, output) {
    mydata <- data.frame(name = character(),
                         email = character(),
                         useR = factor(levels = c('Yes', 'No')),
                         notes = character(),
                         stringsAsFactors = FALSE)

    ##### Callback functions.
    my.insert.callback <- function(data, row) {
        mydata <- rbind(data, mydata)
        return(mydata)
    }

    my.update.callback <- function(data, olddata, row) {
        mydata[row,] <- data[1,]
        return(mydata)
    }

    my.delete.callback <- function(data, row) {
        mydata <- mydata[-row,]
        return(mydata)
    }

    ##### Create the DTedit object
    DTedit::dtedit(input, output,
           name = 'mycontacts',
           thedata = mydata,
           edit.cols = c('name', 'email', 'useR', 'notes'),
           edit.label.cols = c('Name', 'Email Address', 'Are they an R user?', 'Additional notes'),
           input.types = c(notes='textAreaInput'),
           view.cols = c('name', 'email', 'useR'),
           callback.update = my.update.callback,
           callback.insert = my.insert.callback,
           callback.delete = my.delete.callback)
}

##### Create the shiny UI
ui <- fluidPage(
    h3('DTedit Template'),
    uiOutput('mycontacts')
)

##### Start the shiny app
shinyApp(ui = ui, server = server)
...