如何取消lapply涉及函数(x)as.Date的结果(as.POSIXct(x,origin =" 1970-01-01"))

时间:2016-02-24 00:25:58

标签: r lapply posixct

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

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

该类是数字,而我想要一个日期。为什么会发生这种情况,如何实现日期向量?

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:0)

你真的不需要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