В timevis + Shiny можно ли выполнять операции с входной переменной input $ mytime_window? - PullRequest
0 голосов
/ 02 февраля 2019

В пакете timevis R входное значение input$mytime_window "вернет вектор из 2 элементов, содержащий минимальные и максимальные даты, видимые в настоящее время на временной шкале."Я хотел бы добавить пять дней к минимальному значению и использовать результат в функции setWindow(), которая сама будет частью observeEvent.В этом случае представление временной шкалы в идеале должно перейти к новому диапазону дат.

В моих экспериментах setWindow() установит представление со значением input$mytime_window[1] в качестве, например, даты начала, затем я могу использовать строку даты или функцию типа Sys.Date() в качестве даты окончанияи получить ожидаемый результат.Но я не могу использовать операторы или функции для значения input$mytime_window.Все мои попытки узнать значение input$mytime_window показывают значение null.

И даже если я спрашиваю о невозможном, я, вероятно, довольно озадачен значением input$mytime_window и тем, как оно работает;Я хотел бы понять это лучше.

Минимальный код ниже:

library(shiny)
library(timevis)

# Minimal example derived from https://daattali.com/shiny/timevis-demo/

data <- data.frame(
  id      = 1:4,
  content = c("Item one", "Item two",
              "Ranged item", "Item four"),
  start   = c("2016-01-10", "2016-01-11",
              "2016-01-20", "2016-02-14 15:00:00"),
  end     = c(NA, NA, "2016-02-04", NA)
)

ui <- fluidPage(

  actionButton("action", label = "Action"),

  timevisOutput("timeline")

)

server <- function(input, output) {

      output$timeline <- renderTimevis({
        timevis(data)
      })

      # Trying to use input$mytime_window as a value in setWindow()
      # The code below gives no result
      # But replace the line with: 
      # setWindow("timeline", input$mytime_window[1], Sys.Date())
      # And I get an expected result (just not the one I want)

      observeEvent(input$action, {
        setWindow("timeline", input$mytime_window[1], input$mytime_window[1]+5)
      })

  }

shinyApp(ui = ui, server = server)

Я также попытался преобразовать входные данные $ mytime_window и добавить их в days (5) с пакетом lubridate.Оба выдают сообщения об ошибках.

Спасибо за любую помощь, и да, это мой первый пост, поэтому я буду отмечать это, даже если у меня не будет решения!

1 Ответ

0 голосов
/ 06 февраля 2019

Комментарий, предоставленный @KeqiangLi, ответил на этот вопрос.Строка, которая нуждалась в помощи, теперь выглядит следующим образом:

setWindow("timeline", input$timeline_window[1], as.Date(input$timeline_window[1])+5)

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