在POSIXct的向量上使用sapply

时间:2010-03-20 05:56:41

标签: r posixct sapply

我有一个非常简单的问题。我想从数据帧处理一列POSIXct对象并生成一个datetime字符串向量。我尝试使用以下sapply调用

dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))

但无济于事。我一直收到以下错误:

> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L,  :
invalid 'trim' argument

当我将此函数应用于列中的单个POSIXct对象时,我没有问题。关于问题是什么,我现在很难过。我是否需要对POSIXct对象做一些特别的事情?

1 个答案:

答案 0 :(得分:13)

format()将采用向量参数,所以 format(df$datetime,"%Y-%m-%dT%H:%M:%S")应该做你需要的。

当您使用sapply时,您的对象被强制为数字,因此调用了错误的格式方法。您可以使用sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S"))将其强制回POSIXct,但除非您有特殊原因要使用apply,否则只需使用上述方法