为什么sapply没有使用lubridate';s解析日期时间,而lapply不解析?

为什么sapply没有使用lubridate';s解析日期时间,而lapply不解析?,r,lapply,sapply,lubridate,R,Lapply,Sapply,Lubridate,给定:一个简单的4x2数据帧,填充字符类型的数据 目标:相同的数据帧,但所有值都被应用以下lubridate函数调用的结果所替换:parse_date_time(df,orders=c(“ymd_hms”,“mdy_hms”),tz=“ETZ”) 似乎使用lappy效果很好。使用sapply时,parse_date_time函数返回奇怪的大整数 以下是数据: df原因是sapply默认情况下具有simplify=TRUE并且当列表元素的长度或维度相同时,它会简化为向量或矩阵。在内部,日期时间类存

给定:一个简单的4x2数据帧,填充字符类型的数据

目标:相同的数据帧,但所有值都被应用以下lubridate函数调用的结果所替换:
parse_date_time(df,orders=c(“ymd_hms”,“mdy_hms”),tz=“ETZ”)

似乎使用lappy效果很好。使用sapply时,parse_date_time函数返回奇怪的大整数

以下是数据:


df原因是
sapply
默认情况下具有
simplify=TRUE
并且当
列表
元素的长度或维度相同时,它会简化为
向量
矩阵
。在内部,日期时间类存储为数字

typeof(parse_date_time(df$starttime, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ"))
#[1] "double"
是“POSIXct”`

class(parse_date_time(df$starttime, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ"))
#[1] "POSIXct" "POSIXt"  
因此,在执行
矩阵
转换时,它强制执行该操作,而在
列表
中,它保留
格式

如果我们对
data.frame
感兴趣,那么我们将创建一个“df”的副本,并使用
[]
获得与“df”相同的结构

df2 <- df
df2[] <-  lapply(df, FUN = function(column) {
     parse_date_time(column, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ")
   })

df2
#           starttime            stoptime
#1 2014-01-13 12:08:02 2014-01-13 12:19:46
#2 2014-01-14 09:59:09 2014-01-14 10:05:09
#3 2016-06-18 17:43:42 2016-06-18 18:06:59
#4 2016-06-27 12:16:47 2016-06-27 12:29:05

df2关于使用df2[]让lappy返回与df2相同结构的内容的最后一句话。。。我从哪里可以了解到这件事,它叫什么?比如说,船长。