Укажите диапазон дат в блестящем приложении на основе другого ввода данных - PullRequest
0 голосов
/ 26 апреля 2018

Ниже у меня есть простое блестящее приложение, в котором я хочу иметь возможность выбирать диапазон данных, основываясь на выборе «INT» или «DOM» из группы флажков. Но я не могу заставить это работать. Я получаю сообщение об ошибке при попытке использовать min и max. Я воссоздал свой фрейм данных с:

OriginId = c("INT", "DOM", "INT","DOM") 
RequestedDtTm = c("2017-01-16 16:43:33
", "2017-01-17 16:43:33
", "2017-01-18 16:43:33
","2017-01-19 16:43:33") 
testdata = data.frame(OriginId,RequestedDtTm)



    ## ui.R ##
    library(shinydashboard)

    dashboardPage(
      dashboardHeader(),
      dashboardSidebar(),
      dashboardBody()
    )

    library(shinydashboard)

    ui <- dashboardPage(
      dashboardHeader(title = "Basic dashboard"),

      ## Sidebar content
      dashboardSidebar(
        sidebarMenu(
          menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
          menuItem("Change View", tabName = "widgets", icon = icon("th"))
        )
      ),

      ## Body content
      dashboardBody(
        tabItems(
          # First tab content

          # Second tab content
          tabItem(tabName = "widgets",

                  fluidRow(
                    box(title="Histogram 1",width = 12,
                    column(4,

                      checkboxGroupInput("checkGroup2", label = h3("Checkbox group"), 
                                         choices = list("Show Domestic" = "DOM", "Show International" = "INT"),
                                         selected = "DOM")
                    ),
                    column(4,
                           uiOutput("dt1")

                    ),
                    column(4,

                      numericInput("num", label = h3("Numeric input"), value = 1)
                    )
                  ))


          )

        )
      )
    )
#server.r
    server <- function(input, output) {



      output$dt1<-renderUI({
      dateRangeInput('dateRange',
                     label = 'Date range',
                     start = min(subset(testdata[,2],testdata$OriginId %in% input$checkGroup2)), end = max(subset(testdata[,2],testdata$OriginId %in% input$checkGroup2))
      )
      })

      }

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Я решил это с as.POSIXct().

0 голосов
/ 26 апреля 2018

У вас также есть сообщение об ошибке: ‘min’ not meaningful for factors?

Если да, это означает, что вы пытаетесь взять min() фактора, что недопустимо.

Чтобы решить эту проблему с данными вашего примера, вы можете сделать testdata = data.frame(OriginId,RequestedDtTm, stringsAsFactors = FALSE).

Если ваши реальные данные действительно имеют факторы, вы можете заключить их в as.character() перед вызовом min(), например min(as.character(subset(........))).

То же самое относится и к max() конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...