Dear help, suppose I have this array and want to compute sd aross rows and columns.
p <- array(c(1:5, rep(NA, times = 3)), dim = c(5, 5, 3)) apply(p, 1:2, sd) fails because sd requires at least 2 numbers to compute sd apply(p, 1:2, sd, na.rm = TRUE) fails for the same reason I crafted my own function that does what I want sd_fun <- function(i){ if(sum(!is.na(i))==0){ temp.sd <- NA }else{ temp.sd <- sd(i, na.rm = TRUE) } return(temp.sd) } apply(p, 1:2, sd_fun) This does what I want, but when I scale up to large arrays like pp <- array(c(1:5, rep(NA, times = 3)), dim = c(1000, 1000, 60)) the apply function takes a long time to run. Is there a faster, more efficient way to do this? Thanks in advance Matt -- Matthew J. Oliver Assistant Professor College of Marine and Earth Studies University of Delaware 700 Pilottown Rd. Lewes, DE, 19958 302-645-4079 http://www.ocean.udel.edu/people/profile.aspx?moliver [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.