2012-07-17 31 views
2

我仍在試圖更好地理解mlply的工作原理。這裏是我的數據集的簡化版本:使用mapply與Pmax提供挑日子和目的地之間的最大使用mlply與mapply不同的pmax輸出

days <- list(c(as.POSIXct("2010-08-29 00:00:00 EDT"), as.POSIXct("2010-08-30 00:00:00 EDT"))) 
day2 <- list(c(as.POSIXct("2010-07-22 00:00:00 EDT"), as.POSIXct("2010-07-23 00:00:00 EDT"), as.POSIXct("2010-07-24 00:00:00 EDT"))) 
days <- append(day2, days) 
arrivals <- data.frame(date=as.POSIXct("2010-08-29 21:00:00 EDT"), size=72) 
arrivals <- rbind(arrivals, c("2010-07-22 17:30:00 EDT",84)) 

,我得到如下:

starting <- mapply(function(x,y){pmax(x,y)},days,arrivals$date) 
starting[[1]] 
"2010-08-29 21:00:00 EDT" "2010-08-29 21:00:00 EDT" "2010-08-29 21:00:00 EDT" 

我敢肯定,使用mlply的下一個版本不是等價的,顯然是我的錯誤,但是,我不太清楚爲什麼輸出不同。

starts <- mlply(cbind(arrivals$date,days), function(date,days){pmax(date,days)}) 
as.POSIXct(starts[[1]], origin='1970-1-1') 
[1] "2010-08-30 02:00:00 EDT" "2010-08-30 02:00:00 EDT" "2010-08-30 02:00:00 EDT" 

理想情況下,我正在尋找如何使用mlply重寫mapply語句。 由於提前, --JT

回答

3

比較對於UTC/GMT

> starts[[1]] 
[1] 1283112000 1283112000 1283112000 
> as.numeric(starting[[1]]) 
[1] 1283112000 1283112000 1283112000 
> 

POSIX引用。在您的示例中,您似乎提前5小時。這是內部輸出問題,它們似乎是同一時間。進一步評論是困難的。這將取決於您正在運行的操作系統。它可能會受到您的語言環境setings等

as.POSIXct gives an unexpected timezone建議可能有問題as.POSIXct.date但我不知道這是否仍然是一個問題。

+0

謝謝... tz對我來說並不重要,所以我可能會將它存儲爲chron。從好的方面來說,至少我正在以mlply編寫函數。 – JimmyT 2012-07-17 18:54:59