Замена столбца в R другим столбцом разной длины

У меня есть веб-приложение Shiny, которое я разрешаю пользователям загружать свои файлы. Я выполняю пару строк манипуляций с данными, чтобы упростить построение на моем выходе Dygraph.

Мои данные

В моем коде мне нужно удалить столбец "Время", который загружается с каждым файлом (каждый файл имеет столбец "Время" ), а затем заменить его на столбец времени, который я сохранил как файл .csv (называемый time).

Я получаю сообщение об ошибке Error: replacement has 3001 rows, data has 2990. Как мне решить эту проблему? Мой столбец времени специально отформатирован в Excel для работы с выводом Dygraph, поэтому я заменяю все загруженные столбцы времени этим (называемым time), загруженным в мое рабочее пространство.

  uploadedData <- reactive({
    # input$file1 will be NULL initially. After the user selects
    # and uploads a file, it will be a data frame with 'name',
    # 'size', 'type', and 'datapath' columns. The 'datapath'
    # column will contain the local filenames where the data can
    # be found.
    inFile <- input$file1

    if (is.null(inFile))
      return(NULL)

    uploadedFile <- read.csv(inFile$datapath, header=input$header, sep=input$sep, 
             quote=input$quote)
    uploadedFile[1]<- NULL
    uploadedFile$Time <- time
    uploadedFile$Time <- as.POSIXct(strptime(uploadedFile$Time,"%m/%d/%Y %H:%M:%S" ))
    uploadedFile <- xts(uploadedFile[,-1], order.by=uploadedFile[,1])
    })

  output$graph <- renderDygraph({
    uploadedFile <- uploadedData()
    updateSelectizeInput(session, 'uploadChannels', choices = names(uploadedFile))
    fileInput <- input$uploadChannesl
    component5 <- uploadedFile[, fileInput]
    dygraph(component5, main = "Temperature Rise Data Plot") %>%
      dyAxis("y", label = "Temp (F)") %>%
      dyAxis("x", label = "Time (min)")%>%
      dyRangeSelector() %>%
      dyOptions(colors = RColorBrewer::brewer.pal(8, "Dark2"))
  })

Revision - я пересмотрел элементы внутри xts, но всякий раз, когда я выбираю канал, он всегда возвращается обратно к каналу сканирования. Если я выберу "Watts", график мощности будет всплывать до тех пор, пока он не вернется обратно к диаграмме сканирования.

  output$graph <- renderDygraph({
    uploadedFile <- input$file1

    if (is.null(uploadedFile))
      return(NULL)

    uploadedFile <- read.csv(uploadedFile$datapath, header=input$header, sep=input$sep, 
                             quote=input$quote)
    uploadedFile$Time <- as.POSIXct(strptime(uploadedFile$Time,"%H:%M:%S"))
    uploadedFile$ctime <- strptime(paste(uploadedFile$Time), "%Y-%m-%d %H:%M:%S")
    updateSelectizeInput(session, 'uploadChannels', choices = names(uploadedFile))
    fileInput <- input$uploadChannels
    component5 <- uploadedFile[, fileInput]
     xts(component5, uploadedFile$Time)  %>%
      dygraph()
     })

})

ui.R

shinyUI(fluidPage(
  navbarPage("Engineering Laboratory Data",         
 tabPanel("Upload your Own File:",
                      sidebarLayout(
                        sidebarPanel(
                          fileInput('file1', 'Choose CSV File',
                                    accept=c('text/csv', 
                                             'text/comma-separated-values,text/plain', 
                                             '.csv')),
                          tags$hr(),
                          checkboxInput('header', 'Header', TRUE),
                          radioButtons('sep', 'Separator',
                                       c(Comma=',',
                                         Semicolon=';',
                                         Tab='\t'),
                                       ','),
                          radioButtons('quote', 'Quote',
                                       c(None='',
                                         'Double Quote'='"',
                                         'Single Quote'="'"),
                                       '"'),
                          selectInput("uploadChannels", label = "Choose a Channel",
                                         choices = NULL)
                        ),
                        mainPanel(
                              dygraphOutput('graph')
                        ))



                        ))))

Ответы

Ответ 1

вот мой прием. У меня не было вашего ui.R, поэтому я сделал это. он упрощен, но работает, но я не уверен, что это то, что вы хотите. Мои извинения, если я полностью ошибаюсь: -)

server.R
library(shiny)
library(dygraphs)

shinyServer(function(input, output) {

  uploadedFile <- read.csv("/Users/drisk/Downloads/CSV_1.csv", header=TRUE, sep=",")
  uploadedFile$Time <- as.POSIXct(strptime(uploadedFile$Time,"%H:%M:%S"))
  uploadedFile$ctime <- strptime(paste(uploadedFile$Time), "%Y-%m-%d %H:%M:%S")

  output$graph <- renderDygraph({
xts(uploadedFile[,3], uploadedFile[,6])  %>%
      dygraph()
  })

})

ui.R

library(shiny)
library(dygraphs)

shinyUI(fluidPage(


    mainPanel(
      dygraphOutput("graph"))
))

и вот скриншот введите описание изображения здесь