我有一个带有 NA 的 data.frame,我想将它们相对于它们在 data.frame 中的位置合并,最后如果连续丢失所有内容,则使用我提供的一些任意值:
我想出了这段代码,它在提供的...
参数上递归地工作。我很确定有一个更好的主意,或者一个内置函数。
coalesce <- function(x,...) {
fillerList <- list(...)
y <- try(y <- unlist(..1))
if(class(y)=="try-error" | length(y)==0L) {
x <- x
}
else if(length(y)==1L) {
x[is.na(x)] <- y
}
else {
x[is.na(x)] <- y[is.na(x)]
}
# recursion
if(length(fillerList)-1L<=0L) {return(x)}
else {return(coalesce(x,fillerList[-1]))}
}