【问题标题】:How to unlist result of lapply involving function(x) as.Date(as.POSIXct(x, origin = "1970-01-01"))如何取消列出涉及 function(x) as.Date(as.POSIXct(x, origin = "1970-01-01")) 的 lapply 结果
【发布时间】:2016-02-24 00:25:58
【问题描述】:

我有一个列表,它是以下命令的结果:

lapply(data$displayDate, function(x) as.Date(as.POSIXct(x, origin = "1970-01-01")))

结果如下:

> data$displayDateDay[1:10]
[[1]]
[1] "2015-05-02"

[[2]]
[1] "2015-05-10"

[[3]]
[1] "2015-05-10"

[[4]]
[1] "2015-05-10"

[[5]]
[1] "2015-05-11"

[[6]]
[1] "2015-05-12"

[[7]]
[1] "2015-05-12"

[[8]]
[1] "2015-05-13"

[[9]]
[1] "2015-05-13"

[[10]]
[1] "2015-05-26"

这一切都很好,但我不知道如何将其恢复到我的数据表中的属性列向量中。如果我尝试unlist 这个列表,这就是我得到的:

> unlist(testVector)
 [1] 16557 16565 16565 16565 16566 16567 16567 16568 16568 16581

课程是数字的,而我想要一个日期。为什么会发生这种情况,如何获得日期向量?

【问题讨论】:

    标签: r lapply posixct


    【解决方案1】:

    使用do.call():

    list <- lapply(data$displayDate, function(x) as.Date(as.POSIXct(x, origin = "1970-01-01")))
    vec <- do.call("c", list)
    

    顺便说一句,通过 SO 数据库快速搜索会出现this gem

    【讨论】:

    • 感谢您的提示和上一篇文章的链接。我显然没有使用正确的搜索字词。
    【解决方案2】:

    你真的不需要lapply第一名...

    如果data 是一个数据框,则以下内容应为您提供所需形式的列:

    data <- as.data.frame(cbind(row = c(1, 2, 3), displayDate = c(345234523, 242345553, 302424556)))
    
    > data
      row displayDate
    1   1   345234523
    2   2   242345553
    3   3   302424556
    
    data$displayDateDay <- as.Date(as.POSIXct(data$displayDate, origin = "1970-01-01"))
    
    > data
      row displayDate displayDateDay
    1   1   345234523     1980-12-09
    2   2   242345553     1977-09-05
    3   3   302424556     1979-08-02
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 2015-05-21
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多