【发布时间】:2014-08-29 21:14:28
【问题描述】:
考虑以下命名向量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
我想计算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 NA 13
但这似乎太过分了,并且做了很多新的任务/副本。我相信有更好的方法。
有什么更好的方法可以在有效忽略NA值的情况下返回累积和?
【问题讨论】:
标签: r