如何防止 mapply 将日期更改为 double ?
这就是我的意思:
datedf<-data.frame(y=as.character(rep(2010,12)),m=as.character(seq(1,12,1)),stringsAsFactors=FALSE)
head(datedf)
yyyymm_to_date<-function(y,m) {
return(as.Date(paste0(y,ifelse(nchar(m)==1,paste0("0",m),m),"01"),"%Y%m%d"))
}
yyyymm_to_date("2000","4") # prints "2010-04-01"
datedf$d<-mapply(FUN=yyyymm_to_date,y=datedf$y,m=datedf$m,SIMPLIFY=FALSE) # simplify does not help
head(datedf) # prints double numbers ?? --> want dates
谢谢&亲切的问候
最佳答案
您只需要一个 do.call
(因为 maply
返回一个 list
),您的代码完全没问题:
datedf$d <- do.call('c',mapply(FUN=yyyymm_to_date,y=datedf$y,m=datedf$m,SIMPLIFY=FALSE))
head(datedf)
# y m d
#1 2010 1 2010-01-01
#2 2010 2 2010-02-01
#3 2010 3 2010-03-01
#4 2010 4 2010-04-01
#5 2010 5 2010-05-01
#6 2010 6 2010-06-01
关于r - mapply 将日期更改为双倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42410120/