在这种特定情况下,我相信pmin
可以解决问题:
POP.Start.final <- pmin(combinedOM$Cons.Start.Date.y,
combinedOM$OS.Start.Date.y,
na.rm=TRUE)
在一般情况下,SIMPLIFY=TRUE
(默认)使用效用函数通过 .simplify2array
将列表转换为原子模式的向量as.vector
。因为日期在内部存储为数字,SIMPLIFY=TRUE
所以会将日期列表转换为模式数字的向量并删除Date
该类。您可以设置SIMPLIFY=FALSE
保留Date
类,然后使用do.call
withc
将列表转换为向量。
POP.Start.final <- do.call(c,mapply(min, combinedOM$Cons.Start.Date.y,
combinedOM$OS.Start.Date.y,
MoreArgs = list(na.rm=TRUE),SIMPLIFY=FALSE))
一些可重现的代码:
a <- as.Date(c("2012-01-11","2012-06-30","2012-04-18"))
b <- as.Date(c("2013-04-21","2012-03-22","2012-05-01"))
pmin(a,b)
#[1] "2012-01-11" "2012-03-22" "2012-04-18"
do.call(c,mapply(min,a,b,MoreArgs=list(na.rm=TRUE),SIMPLIFY=FALSE))
#[1] "2012-01-11" "2012-03-22" "2012-04-18"
顺便说一句,使用T
and F
for TRUE
andFALSE
有点令人担忧,因为T
andF
可以重新分配,而TRUE
andFALSE
不能重新分配。