【发布时间】:2018-08-23 08:11:25
【问题描述】:
我可能在这里遗漏了一些非常明显的东西,你能帮我吗?
当我向 seLocalize() 函数发送一个日期对象时,它会按预期返回我的代码(我在 18 年 3 月 14 日发送并在 18 年 3 月 13 日返回)
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
if(data$wday != 0) {
data <- data-86400
}
print(data)
}
虽然,为了遵循这段代码,相同的测试返回“错误:$ operator is invalid for atomic vectors”
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
while(data$wday != 0) {
data <- data-86400
}
print(data)
}
为什么?
【问题讨论】:
-
减法后不是POSIXlt,我猜是
class(as.POSIXlt(Sys.Date()) - 1L) -
看起来您正在尝试混合两种不同类型的 POSIXt 变量。当您从 POSIXlt 向量中减去一个值时,它会被强制转换为 POSIXct 向量。
标签: r posix posixlt data-objects