Я пытаюсь создать приложение, которое загружает 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))
})