我有一個問題,使用lapply和mapply返回數據。即該mapply/lapply返回列表的列表。如果我「簡化」這個呼叫,它會去掉班級信息。mapply和SIMPLIFY,而不是剝離類
例如:
library(lubridate)
addBusDays <- function(d, dd) {
d
}
# start with datframe
dates <- c(ymd('2013-03-04'), ymd('2013-03-07'))
my.df <- data.frame(n=c(1,2), d=dates)
mapply(addBusDays, my.df$d, 1, SIMPLIFY=F)
回報
[[1]]
[1] "2013-03-03 19:00:00 EST"
[[2]]
[1] "2013-03-06 19:00:00 EST"
class(mapply(addBusDays, my.df$d, 1, SIMPLIFY=F)[[1]]
[1] "POSIXct" "POSIXt"
它看起來像它返回一個列表的列表,這是可行的,但我不艾克的解決方案。允許函數簡化POSIX類剝離:
mapply(addBusDays, my.df$d, 1, SIMPLIFY=T)
class(mapply(addBusDays, my.df$d, 1, SIMPLIFY=T))
> mapply(addBusDays, my.df$d, 1, SIMPLIFY=T)
[1] 1362355200 1362614400
> class(mapply(addBusDays, my.df$d, 1, SIMPLIFY=T))
[1] "numeric"
這看起來會返回一個列表,但會剝離類信息。任何幫助/想法?
工作工作會有斷的加文的建議
library(lubridate)
addBusDays <- function(d, dd) {
d
}
# start with datframe
dates <- c(ymd('2013-03-04'), ymd('2013-03-07'))
my.df <- data.frame(n=c(1,2), d=dates)
my.df$d.2 <- as.POSIXct(mapply(addBusDays, my.df$d, 2, SIMPLIFY=T), origin="1970-01-01")
typeof(my.df$d)
class(my.df$d)
mode(my.df$d)
typeof(my.df$d.2)
class(my.df$d.2)
mode(my.df$d.2)
my.df
回報
> my.df
n d d.2
1 1 2013-03-03 19:00:00 2013-03-04
2 2 2013-03-06 19:00:00 2013-03-07
該技術由1移天 - 這不應該作爲函數返回的日期已過這個例子。 ..除此之外,班級等似乎是現貨。
我的眼睛在愚弄我 - 我的問題是加載數據框 - 而不是加文的解決方案。
'mapply'被返回一個列表,其中的每個組件都是類「POSIXct」的向量,也從類「POSIXt」繼承。 – 2013-03-27 18:04:27
仍然不知道如何應用這個函數並返回一個POSIXct類的列表 - 你能夠在這個方向上推動我嗎? – akaphenom 2013-03-27 18:08:00
您的願望是我的命令 - 請參閱我的答案,現在已更新。 – 2013-03-27 18:17:21