我正在写一个闪亮的,想要一个日期的滑块。我的数据中的日期是每月一次,我想一次一个月前进。滑块输入的docs表示步长值为秒或天,具体取决于最小/最大参数类型。目前我有:
>>> import re, json
>>> broken = r'"JSON string with escaped quote: \' and various other broken escapes: \a \& \$ and a newline!\n"'
>>> json.loads(broken)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 1 column 34 (char 33)
>>> json.loads(re.sub(r'(?<!\\)\\(?!["\\/bfnrt]|u[0-9a-fA-F]{4})', r'', broken))
"JSON string with escaped quote: ' and various other broken escapes: a & $ and a newline!\n"
我希望能够逐月而不是白天,但看起来他们给我的东西似乎不可能。有没有我可以添加的js片段会给我这个功能?
澄清注意:我已阅读此功能的文档,并且据我所知,没有基本功能。测试时,时间格式参数仅更改标签而不是值。我看过一些帖子可以访问某些小部件的值,并想知道这是否可行。例如)
sliderInput("slider", "Time", min=as.Date("2005-01-01"),
max=as.Date("2014-12-01"),
value=as.Date("2005-01-01"), step = 30,...)
答案 0 :(得分:14)
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}
中有timeFormat
个功能。有关更多信息,请访问Slider Input Widget。
修改强>
要获取日期并在以后的分析中使用它们,可以归功于这个问题First day of the month from a POSIXct date time using lubridate以及Roland提供的功能。
sliderInput
答案 1 :(得分:3)
这是我使用的一种解决方案,但首先我想解释一下逻辑:
timeFormat
函数的sliderInput()
自变量未提供所需的1个月步功能。取而代之的是,它只是格式化底层的日常数据,因此,步进每天都保持不变。sliderInput()
有另一个参数step
,可用于显式定义步进增量。但是,它需要一个整数作为输入,因此不接受向量/范围。鉴于月份的长度不同,此处不宜使用单个整数。我尝试使用lubridate::months(1)
和lubridate::period(1, units = "months")
,但都无济于事,因为应用一次渲染后,两者都自动转换为30的整数,因此没有保留每月增量。我找到了shinyWidgets::sliderTextInput()
的解决方案,它创建了一个字符滑块。
假设您的日期存储为表yyyy-mm-dd
的列Date
中的d
个日期:
sliderTextInput(
inputId = "myID",
label = "myLabel",
choices = as.yearmon(unique(d$Date)),
selected = c(as.yearmon(min(d$Date)), as.yearmon(max(d$Date))),
grid = TRUE,
width = "100%"
)
使用此功能,您始终可以按月递增。使用as.yearmon()
,因此您的应用以MMM YYYY
格式显示滑块标签。
请记住,滑块输出是一个字符,因此您需要将其反向转换为日期:
as.Date(as.yearmon(input$myID[1]))
开始as.Date(as.yearmon(input$myID[2]))
结束