2010-03-20 43 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