我有一个数据框,第一列的格式为 yyyy-mm-dd hh:mm:ss 并归类为 POSIXct。 dput()
数据框的一小部分:
structure(list(`TIMESTAMP-TS` = structure(c(1432054800, 1432058400, 1432062000, 1432065600), class = c("POSIXct", "POSIXt"), tzone = ""),
`RECORD-RN` = 4099:4102, `BattV_Min-Volts` = c(12.34, 12.36,
12.35, 12.35), `ETos-DegC` = c(0.097, 0.047, 0.042, 0.023
), `Rso-DegC` = c(3.436, 3.52, 3.385, 3.053)), .Names = c("TIMESTAMP-TS", "RECORD-RN", "BattV_Min-Volts", "ETos-DegC", "Rso-DegC"), row.names = c(NA, 4L), class = "data.frame")
我想使用此列中的范围来选择其他列中的数据。
dateRangeInput
不工作,我想我会尝试 inputSelect
.这尤其有效,因为我有多个具有不同时间步长的数据集,即 5 分钟间隔、1 分钟间隔。这些是我在 Shiny ui.R 文件中编写的用于选择日期和时间的代码行:
selectInput('starttime','Beginning date and time:', choices = data$'TIMESTAMP-TS', selectize = FALSE, size = 4),
selectInput('finishtime','Ending date and time:', choices = data$'TIMESTAMP-TS', selectize = FALSE, size = 4)
当 Shiny 运行时,下拉菜单将日期和时间显示为自 1970 年以来的总秒数。我认为包装
data$'TIMESTAMP-TS'
与 as.POSIXct()
会将其更改为人类可读的形式,但事实并非如此。我尝试让数据作为默认类读入,然后添加
as.POSIXct()
在用于 Shiny 的 ui.R 文件中,但它仍然显示为累积秒数。该实验的一个有趣的副作用是在情节上添加了一种地毯,为小时添加了更多标签,这很有用,因为我制作的第一个情节没有时间指示,只有日期。我应该使用什么来使下拉选项更易于理解?我看到这个 question and answer ,但似乎使用
selectInput
会更容易因为它使用增量中的时间步长,因为它们出现在数据集中。
最佳答案
用这个测试了一个玩具模型:
selectInput(inputId = "choosevar",
label = "Choose Cut Variable:",
choices = as.character(df$`TIMESTAMP-TS`))
请注意,R 通常不喜欢变量名中的减号,因此您需要在波浪号下使用小勾号,无论它叫什么(反引号?)。
关于r - Shiny :使日期和时间在选择输入中按预期显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747772/