R:$ 运算符对原子向量无效错误 POSIX
R: $ operator invalid for atomic vectors Error with POSIX
我可能遗漏了一些非常明显的东西,你能帮我吗?
当我将一个日期对象发送到 seLocalize() 函数时,它 returns 按照我对后续代码的预期(我在 2018 年 3 月 14 日发送并在 2018 年 3 月 13 日返回)
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
if(data$wday != 0) {
data <- data-86400
}
print(data)
}
虽然,为了遵循这段代码,同样的测试returns "Error: $ operator is invalid for atomic vectors"
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
while(data$wday != 0) {
data <- data-86400
}
print(data)
}
为什么?
我很难相信这是一个正确的问题描述,因为该日期的格式无法识别。
> seLocalize <- function(dataTeste) {
+ data <- as.POSIXlt(dataTeste)
+ while(data$wday != 0) {
+ data <- data-86400
+ }
+ print(data)
+ }
> seLocalize("13-mar-18")
Error in as.POSIXlt.character(dataTeste) :
character string is not in a standard unambiguous format
所以我尝试发送我认为可能的修改函数(对于有点模糊的强制引起的错误)一个正确的日期值 as.POSIXlt
:
seLocalize2 <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
while(data$wday != 0) {
data <- as.POSIXlt(data-86400) # coerce back to POSIXlt
}
print(data)
}
> seLocalize2("2018-03-25")
[1] "2018-03-25 PDT"
> seLocalize2("2018-03-29")
[1] "2018-03-25 PDT"
我可能遗漏了一些非常明显的东西,你能帮我吗?
当我将一个日期对象发送到 seLocalize() 函数时,它 returns 按照我对后续代码的预期(我在 2018 年 3 月 14 日发送并在 2018 年 3 月 13 日返回)
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
if(data$wday != 0) {
data <- data-86400
}
print(data)
}
虽然,为了遵循这段代码,同样的测试returns "Error: $ operator is invalid for atomic vectors"
seLocalize <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
while(data$wday != 0) {
data <- data-86400
}
print(data)
}
为什么?
我很难相信这是一个正确的问题描述,因为该日期的格式无法识别。
> seLocalize <- function(dataTeste) {
+ data <- as.POSIXlt(dataTeste)
+ while(data$wday != 0) {
+ data <- data-86400
+ }
+ print(data)
+ }
> seLocalize("13-mar-18")
Error in as.POSIXlt.character(dataTeste) :
character string is not in a standard unambiguous format
所以我尝试发送我认为可能的修改函数(对于有点模糊的强制引起的错误)一个正确的日期值 as.POSIXlt
:
seLocalize2 <- function(dataTeste) {
data <- as.POSIXlt(dataTeste)
while(data$wday != 0) {
data <- as.POSIXlt(data-86400) # coerce back to POSIXlt
}
print(data)
}
> seLocalize2("2018-03-25")
[1] "2018-03-25 PDT"
> seLocalize2("2018-03-29")
[1] "2018-03-25 PDT"