During a simulation I created multiple data sets with > 1,000,000 variables. However, some of the values of these variables are NA
and in some cases even all values are NA
. Now I'd like to calculate the sum of all values of the variables but want to get NA
if all values are NA
.
The problem with the common sum(x, na.rm=T)
or sum(na.omit(x))
is, that it returns 0 if all values are NA
. Thus, I've written my own function that deals with NA
in the expected way:
sumna <- function(x) {
sumna <- NULL
return(ifelse(all(is.na(x)), NA, sum(na.omit(x))))
}
However, that implementation is rather slow.
Thus, I'm looking for an implementation or pre-implemented function that sums up values of a vector, omits NA
and returns NA
if all values are NA
.
Many thanks in advance!
x <- rnorm(1000000)
than it does to applysumna(x)
andsumna(x)
takes a few milliseconds, so I guess most of your computational time is in the simulations rather than this step? – Epiphenomenon