R Shiny: Удалить запись списка, прочитанную из .rds файла - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь создать приложение, которое загружает CSV-файл, сохраняет их как наборы данных, а затем дает возможность удалить из них, работает так:

Сначала, когда я загружаю файл, в нем создается файл rds, в котором будет сохранен список в следующем формате: файл, заголовок, sep, index, и для каждого будет сохранено значение (имя файла в файле, true / ложь в заголовке и т. д.)

server <- function(input, output, session) {
  # Copy uploaded files to local folder
  observeEvent(input$uploadId, {
    req(input$file1)
    file.copy(
      from = input$file1$datapath,
      to = paste0('Selected_Files/', input$file1$name)
    )
    df <- list(
      file = input$file1$name ,
      header = input$header,
      sep = input$sep,
      dec = input$dec,
      quote = input$quote,
      index = input$uploadId
    )
    if (input$uploadId > 1) {
      old_df <- readRDS("File_Format.rds")
      df <-
        sapply(names(old_df), function(n) {
          c(old_df[[n]], df[[n]])
        }, simplify = FALSE)
    }
    saveRDS(df, "File_Format.rds")
  })

  # Load all the uploaded files to a list
  datasetlist <- eventReactive(input$uploadId, {
    File_Format <- readRDS("File_Format.rds")
    datalist <- list()
    datalist <-
      lapply(1:length(File_Format[[1]]), function(d)
        read.csv(
          paste0("Selected_Files/", File_Format$file[d]),
          header = File_Format$header[d],
          sep = File_Format$sep[d],
          dec = File_Format$dec[d],
          quote = File_Format$quote[d]
        ))
    names(datalist) <-
      paste(File_Format$index, File_Format$file, sep = ".")


    return(datalist)
  })

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

observeEvent(input$deleteid , {
    old_df <- readRDS("File_Format.rds")
    df <- old_df[-which(input$remove %in% old_df$file)]
    saveRDS(df, "File_Format.rds")
  })
  #Delete Selected File
  datasetlist2 <- eventReactive(input$deleteid, {
    data <- datasetlist()
    deleteDataset <- input$remove
    datalist <-data[!input$remove %in% deleteDataset]
    return(datalist)
    names(datalist) <-
      paste(File_Format$index, File_Format$file, sep = ".")
  })
  observeEvent(input$deleteid, {
    data <- datasetlist2()

    updateSelectInput(session,
                      "dataset",
                      choices = names(data),
                      selected =  names(data))
    updateSelectInput(session,
                      "remove",
                      choices = names(data),
                      selected = names(data))


  })
...