我在使用 lapply 和 mapply 返回数据时遇到问题。即 mapply / lapply 返回一个列表列表。如果我“简化”调用,它会删除类信息。
例如:
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"
这看起来返回一个列表,但去掉了类信息。任何帮助/想法?
根据 Gavin 的建议工作
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 - 在此示例中不应该,因为函数返回传入的日期......除了类等似乎是正确的。
而且我的眼睛在愚弄我——我的问题在于加载数据框——而不是加文的解决方案。