假设我有一个年和周的向量,如:yw<-c("2020-01","2020-02","2020-03")
。如何将其作为start
和end
日期在dateRangeInput()
中传递
library(shiny)
library(plotly)
yw<-c("2020-09", "2020-10", "2020-11")
name<-c("AD","DF","FD")
value<-c(4,5,6)
df<-data.frame(yw,name,value)
v1 <- range(as.Date(paste0(df$yw, 1), format = '%Y-%W%w'), na.rm = TRUE)
shinyApp(
ui = fluidPage(
dateRangeInput("dr", "Date range:",
start = v1[1],
end = v1[2]),
plotlyOutput("pl")
)
,
server = function(input, output, session) {
output$pl<-renderPlotly({
sub<-subset(df, yw==input$dr)
plot_ly(sub,
x = ~ yw,
y = ~value,
) %>%
add_trace(
type = 'scatter',
mode = 'lines+markers',
hoveron = 'points')
})
}
)
由于日期为年-周格式,使用paste
在末尾连接一个伪周,转换为Date
类,得到日期的range
,可以在dateRangeInput
中用作start
和end
v1 <- range(as.Date(paste0(yw, 1), format = '%Y-%W%w'), na.rm = TRUE)
v1
#[1] "2020-01-27" "2021-04-05"
-闪亮的
..
fluidPage(
dateRangeInput("daterange1", "Date range:",
start = v1[1],
end = v1[2]),...
..