通过apply()[duplicate]转换的POSIXct日期对象

问题描述 投票:3回答:1

这个问题在这里已有答案:

我遇到了使用POSIXct对象的问题。使用使用sapply()返回POSIXct对象的函数,sapply()似乎会自动将它们转换为数字。

lapply()似乎维护了POSIXct类,但是当我unlist()时,我再次失去它。

有没有办法在仍然使用POSIXct的同时利用apply()?我有一个项目在工作中有很多日期时间信息,我很沮丧。非常感谢!

# unwanted POSIXct conversion to numeric
as.POSIXct(Sys.time(), "GMT") %>% rep(5) %>% sapply(function(x) x) 

# lapply seems to maintain POSIXct class, but if I unlist(), I lose POSIXct again
as.POSIXct(Sys.time(), "GMT") %>% rep(5) %>% lapply(function(x) x) 
as.POSIXct(Sys.time(), "GMT") %>% rep(5) %>% lapply(function(x) x) %>% unlist()
r posixct
1个回答
-1
投票

我不确定这是最有效的方法,但作为一个快速修复,你可以先将它们转换为角色

as.POSIXct(sapply(rep(as.POSIXct(Sys.time(),“GMT”),5),function(x)as.character(x)))

## [1] "2019-03-22 19:24:37 CET" "2019-03-22 19:24:37 CET"
## [3] "2019-03-22 19:24:37 CET" "2019-03-22 19:24:37 CET"
## [5] "2019-03-22 19:24:37 CET"

更新

这就留下了一个问题,为什么你首先需要一个sapply?

 as.POSIXct(rep(Sys.time(),5))


##[1] "2019-03-22 19:29:40 CET" "2019-03-22 19:29:40 CET"
##[3] "2019-03-22 19:29:40 CET" "2019-03-22 19:29:40 CET"
##[5] "2019-03-22 19:29:40 CET"
© www.soinside.com 2019 - 2024. All rights reserved.