说我有两个向量:
a<-c(6,6,NA,NA,9,9,8,NA,NA,7,NA,NA,NA,NA)
b<-c(NA,NA,NA,NA,NA,NA,NA,NA,NA,8,NA,5,7,NA)
如果向量有任何增加,我将值更改为NA。
说,在向量a
中,第五个值为9
,从上一个值6
增加,因此它将是NA
以及之后的所有值。对于b
向量,从5
更改为7
,因此7
向前必须为NA
。
预期产出:
a = c(6,6,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)
b = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,8,NA,5,NA,NA)
如果向量没有增加,则向量保持不变。
如何创建实现此功能的功能?
答案 0 :(得分:2)
这应该可行。
a<-c(6,6,NA,NA,9,9,8,NA,NA,7,NA,NA,NA,NA)
b<-c(NA,NA,NA,NA,NA,NA,NA,NA,NA,8,NA,5,7,NA)
foo <- function(vec){
na.rm.vec <- vec[!is.na(vec)]
na.rm.vec[na.rm.vec > na.rm.vec[1]] <- NA
vec[!is.na(vec)] <- na.rm.vec
return(vec)
}
foo(a)
# [1] 6 6 NA NA NA NA NA NA NA NA NA NA NA NA
foo(b)
# [1] NA NA NA NA NA NA NA NA NA 8 NA 5 7 NA