当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R balancePOSIXlt 平衡“不规则”和超出范围的 POSIXlt 日期时间


R语言 balancePOSIXlt 位于 base 包(package)。

说明

"POSIXlt" 的 ‘balance’ 对象的实用程序。

unCfillPOSIXlt(x)balancePOSIXlt(x, fill.only=TRUE, classed=FALSE) 的快速 primitive 版本,或者等效地,unclass(balancePOSIXlt(x, fill.only=TRUE)) 的命名来源。

用法

balancePOSIXlt(x, fill.only = FALSE, classed = TRUE)
unCfillPOSIXlt(x)

参数

x

一个R对象继承自"POSIXlt", 看POSIXlt.

fill.only

logical 指定 balancePOSIXlt(x, ..) 是否应该仅通过回收 “fill up” ,而不是重新检查有效性或重新计算,例如 x$wdayx$yday

classed

logical 指定是否应对结果进行分类,默认情况下为 true。使用 balancePOSIXlt(x, classed = FALSE) 相当于但比 unclass(balancePOSIXlt(x)) 更快。

“Ragged” 且超出范围“Balanced” POSIXlt

注意"POSIXlt"对象x可能有不同的(9 到 11)列表组件lengths,只需将它们回收到完整长度即可。之前R4.3.0,这在打印、格式化和转换到"POSIXct",但通常不是为了length(),转换为"Date"或索引,即子集化,[,或子分配,[<-.

相关地,组件sec,min,hour,mdaymon可能已经超出了其指定范围(例如,0-23 小时)并且仍然可以正常工作,例如在转换和打印方面。这也受到支持,因为R4.3.0,至少当值不是极端时。

函数 balancePOSIXlt(x) 现在将返回 "POSIXlt" 对象 x 的一个版本,默认情况下,它在两种方式上是平衡的:所有内部列表组件都是全长的,并且它们的值在 as.POSIXlt 中指定的范围内的“POSIXlt 详细信息”。设置fill.only = TRUE只会将列表组件回收到完整长度,但根本不检查它们。当 x 的所有组件都已经是全长时,速度会特别快。

实验上,balancePOSIXlt() 和其他返回 POSIXlt 对象的函数现在设置 logical 属性 "balanced",其中 NA 表示 “filled-in”,即,不是 “ragged” 和 TRUE 表示(完全)平衡。

例子

## FIXME: this should also work for regular (non-UTC) time zones.
TZ <-"UTC"
# Could be
# d1 <- as.POSIXlt("2000-01-02 3:45", tz = TZ)
# on systems (almost all) which have tm_zone.
oldTZ <- Sys.getenv('TZ', unset = "unset")
Sys.setenv(TZ = "UTC")
d1 <- as.POSIXlt("2000-01-02 3:45")
d1$min <- d1$min + (0:16)*20L
(f1 <- format(d1))
str(unclass(d1))      # only $min is of length > 1
df <- balancePOSIXlt(d1, fill.only = TRUE) # a "POSIXlt" object
str(unclass(df))      # all of length 17; 'min' unchanged
db <- balancePOSIXlt(d1, classed = FALSE)  # a list
stopifnot(identical(
    unCfillPOSIXlt(d1),
    balancePOSIXlt(d1, fill.only = TRUE, classed = FALSE)))
str(db) # of length 17 *and* in range

if(oldTZ == "unset") Sys.unsetenv('TZ') else Sys.setenv(TZ = oldTZ)

也可以看看

有关有效 POSIXlt 对象的许多方面的更多详细信息,特别是其内部列表组件,请参阅“DateTimeClasses”,例如 as.POSIXlt,特别是“POSIXlt 详细信息”部分。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Balancing “Ragged” and Out-of-range POSIXlt Date-Times。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。