當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。