2010-03-20 56 views
7

我有什么可能是一个非常简单的问题。我想从一个数据框处理一列POSIXct对象并生成一个日期时间字符串的向量。我试图使用以下sapply电话在POSIXct向量上使用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对象做一些特别的事吗?

+0

@Chris进行了一些小修改。如果您反对我所做的任何事情,请随时回滚。最好的祝福。 – bernie 2010-03-20 06:33:28

+0

感谢Adam。感谢您的澄清。 – Chris 2010-03-23 05:41:23

回答

12

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,否则只需使用上述方法

+0

非常感谢狮子座!确实很简单的答案。 – Chris 2010-03-23 05:42:24