hanberge x <- as.Date(c("2012-07-01","2012-07-02","2012-07-03","2015-07-03")) y <- as.Date(c("2013-07-01","2013-07-02",NA,"2014-07-02")) if(is.na(y)==TRUE) NA else max(x,y) [1] NA Warning message: In if (is.na(y) == TRUE) NA else max(x, y) : 条件的长度大于一,因此只能用其第一元素 目的:求出x或y中的最大日期,如果y列含NA则返回NA 求大神帮忙解答
jht0220 x <- c("2012-07-01","2012-07-02","2012-07-03","2015-07-03") y <- c("2013-07-01","2013-07-02",NA,"2014-07-02") max1 <- function(x){ temp <- ifelse(sum(is.na(x)), NA, max(x)) temp } 用ifelse 定义处理一下就可了
hanberge 非常感谢,我的目的是求出对应下标的最大值,如果y含NA则对应的下标返回NA,其余的返回各自对应下标的最大值, 另外sum(is.na(x))不理解是什么意思,盼求解答,非常感谢 :blush:
ryo [未知用户] > any(is.na(x)) [1] FALSE > sum(is.na(x)) [1] 0 > anyNA(x) [1] FALSE > anyNA(y) [1] TRUE 都行...