Во-первых, я хотел бы поделиться процессом, которого я хочу достичь.
- с помощью fileInput Я буду загружать файл данных в формате CSV.
- затем он проверит значения со значениями базы данных и объединит столбцы.
- затем добавит дополнительный столбец в загруженный файл с помощью dplyr .
- наконец-то отобразил обновленный файл в разделе основной панели в Shiny.
Я смог сделать обновленные данные доступными. однако мое приложение вылетает, как только файлы не могут объединиться (т.е. в случае необычного столбца между двумя наборами данных)
Ниже приведен мой код: - также вы можете проверить, правильно ли подготовлен код .
wireharnessInput_UI <- function(id){
ns = NS(id)
box(
width = 2,
height = "100%",
solidHeader = T,
status = "primary",
fileInput(inputId = ns("upload"),
label = "Upload Connector & Terminal file",
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv", "xlsx")),
actionButton(inputId = ns("go"),
label = "Submit"),
tableOutput(ns("connectortable"))
)
}
connectorTable_function <- function(input, output, session) {
original <- reactiveValues()
observeEvent(input$upload,{
thefile <- input$upload
if(is.null(thefile)){return(NULL)}
oldData <- read.csv(thefile$datapath, header = T)
newfile <- oldData
newfile$Number <- as.factor(newfile$Number)
## column name "Number" is the common name between two datasets.
## Major bug area :- Can you let me know suitable way to validate whether the datatable consists of "Number" column.
observeEvent(input$go, {
library(tidyverse)
c <- connectorTerminal %>% ## connectorTerminal file is already present in the database
select(Number, Cost_per_Piece_Dollar)
join_data1 <- left_join(newfile, c, by = "Number")## Merging two datasets
library(dplyr)
join_data1 <- join_data1 %>%
mutate(BulkPrice_per_unit = Cost_per_Piece_Dollar * 0.7) %>%
mutate(TotalCost = BulkPrice_per_unit * Qty)
output$connectortable <- renderTable({ join_data1 })
})
})
}
Thanks