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"