0

我可能在这里遗漏了一些非常明显的东西,你能帮我吗?

当我将日期对象发送到 seLocalize() 函数时,它会按预期返回我的后续代码(我发送了 18 年 3 月 14 日并返回了 18 年 3 月 13 日)

seLocalize <- function(dataTeste) {
    data <- as.POSIXlt(dataTeste) 
    if(data$wday != 0) {
        data <- data-86400
    }
    print(data)
}

虽然,为了遵循这段代码,相同的测试返回“错误:$ 运算符对原子向量无效”

seLocalize <- function(dataTeste) {
    data <- as.POSIXlt(dataTeste)
    while(data$wday != 0) {
        data <- data-86400
    }
    print(data)
}

为什么?

4

1 回答 1

1

我很难相信这是一个正确的问题描述,因为该日期的格式无法识别。

> 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"
于 2018-03-14T18:01:33.890 回答