【发布时间】:2016-04-12 03:04:11
【问题描述】:
从?POSIXct我们知道
“POSIXct”类表示自 1970 年初(UTC 时区)以来的(有符号)秒数,作为数字向量。
因此,我假设要以毫秒为单位获得 POSIXct 值,我们需要乘以 1000
想想 2015 年 12 月的日子
## generate sequence of days in December 2015
d <- seq(as.POSIXct("2015-12-01"), as.POSIXct("2015-12-31"), by = 60*60*24)
# [1] "2015-12-01 AEDT" "2015-12-02 AEDT"
# ...
# [29] "2015-12-29 AEDT" "2015-12-30 AEDT" "2015-12-31 AEDT"
将它们转换为整数
d <- as.integer(d)
我们看到每个整数都是10位
nchar(d)
# [1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
当乘以 1000 转换为毫秒时,我们得到
nchar(d * 1000)
# [1] 13 13 13 13 12 13 13 13 13 12 13 13 13 13 12 13 13 13 13 11 13 13 13 13 12 13 13 13 13 12 13
有些值只有 11 或 12 位数字(而我认为将 10 位数字乘以 1000 会增加 3 位数字)
是否有对此我没有看到的解释?
【问题讨论】:
-
看看
lapply(c(11,12,13), function(x) d[nchar(d*1000) %in% x] ),看看返回值的最后4位、3位和2位。 -
还要考虑
lapply(c(10e5, 10e6, 10e7), nchar) -
@thelatemail - 谢谢,我明白你在说什么。但是,我仍然不完全理解发生了什么(或者可能更准确地说是为什么):)
-
尾随零?太大而无法存储为整数,因此它是 sci 表示法和 pacman 吃掉的尾随零
-
@thelatemail - 所以它会出现 - 例如
floor( log10 (d * 1000)) + 1,