【问题标题】:How to make vapply return a date vector?如何使 vapply 返回日期向量?
【发布时间】:2019-12-31 11:20:05
【问题描述】:

如何让vapply 返回日期向量? (我认为这是一个不同的问题:Returning a vector of class POSIXct with vapply):

f1 <- function(x) {
  as.Date(paste0("2000", sprintf("%02d", x), "01"), format = "%Y%m%d")
}

vapply(3:7, f1, as.Date("2000-01-01"))
# [1] 11017 11048 11078 11109 11139

想要:

# "2000-03-01" "2000-04-01"  "2000-05-01"  "2000-06-01"  "2000-07-01"

【问题讨论】:

  • 可以加class(result) &lt;- "Date"
  • 看看运行lapply(3:7, f1); sapply(3:7, f1, simplify = FALSE); sapply(3:7, f1)会发生什么。

标签: r loops date


【解决方案1】:

问题是apply 家族函数删除了Date 类。这是一种方法:

do.call("c", lapply(3:7, f1))

您也可以在评估vapply 后添加class(result) &lt;- "Date"

class(result) &lt;- "Date"完整版:

result <- vapply(3:7, f1, numeric(1))
class(result) <- "Date"
result
# "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多