r-将year-week对象转换为日期,并将其传递给闪亮应用程序中的dateRangeInput()



假设我有一个年和周的向量,如:yw<-c("2020-01","2020-02","2020-03")。如何将其作为startend日期在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中用作startend

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]),...
..

最新更新