考虑以下命名向量x.
( x <- setNames(c(1, 2, 0, NA, 4, NA, NA, 6), letters[1:8]) )
# a b c d e f g h
# 1 2 0 NA 4 NA NA 6
Run Code Online (Sandbox Code Playgroud)
我想计算x忽略NA值的累计和.许多R函数都有一个参数na.rm,可以NA在计算之前删除元素. cumsum()不是其中之一,这使得这个操作有点棘手.
我可以这样做.
y <- setNames(numeric(length(x)), names(x))
z <- cumsum(na.omit(x))
y[names(y) %in% names(z)] <- z
y[!names(y) %in% names(z)] <- x[is.na(x)]
y
# a b c d e f g h
# 1 3 3 NA 7 NA …Run Code Online (Sandbox Code Playgroud) r ×1