如何取消列出 lapply 涉及函数 (x) as.Date(as.POSIXct(x, origin = "1970-01-01")) 的结果
How to unlist result of lapply involving function(x) as.Date(as.POSIXct(x, origin = "1970-01-01"))
我有一个列表,它是以下命令的结果:
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"
这一切都很好,但我不知道如何将其返回到我的数据 table 中的 属性 列向量中。如果我尝试 unlist
这个列表,这就是我得到的:
> unlist(testVector)
[1] 16557 16565 16565 16565 16566 16567 16567 16568 16568 16581
class 是数字,而我想要一个日期。为什么会这样,我怎样才能获得日期向量?
使用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。
你真的不需要 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
我有一个列表,它是以下命令的结果:
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"
这一切都很好,但我不知道如何将其返回到我的数据 table 中的 属性 列向量中。如果我尝试 unlist
这个列表,这就是我得到的:
> unlist(testVector)
[1] 16557 16565 16565 16565 16566 16567 16567 16568 16568 16581
class 是数字,而我想要一个日期。为什么会这样,我怎样才能获得日期向量?
使用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。
你真的不需要 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