Как манипулировать загруженным набором данных и визуализировать выходную таблицу с обновленным файлом? - PullRequest
0 голосов
/ 28 февраля 2020

Во-первых, я хотел бы поделиться процессом, которого я хочу достичь.

  1. с помощью fileInput Я буду загружать файл данных в формате CSV.
  2. затем он проверит значения со значениями базы данных и объединит столбцы.
  3. затем добавит дополнительный столбец в загруженный файл с помощью dplyr .
  4. наконец-то отобразил обновленный файл в разделе основной панели в 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
...