> > This is driving me nuts. I have a 3-D array that holds x,y,z > > coordinates from multiple experiments. I need to clean the > data before > > making it sp objects. I want to set all z-values < 0 to 0. In a 2-D > > matrix this is trivial e.g., x[,x[1,]<0] <- 0. But I'm > stumped on how > > to do this on a 3-D array without a loop. Given an array: > > > > foo <- array(rnorm(24), dim=c(4,3,2)) > > dimnames(foo) <- > list(NULL,c('x','y','z'),c('Experiment1','Experiment2')) > > foo[,'z',] > > > > How can I set foo[,'z',]<0 to 0? > > a <- array(rnorm(64), c(4,4,4)) > inds <- which(a < 0, arr.ind=TRUE) > a[inds] <- 0 >
Thanks, but I'm looking to set only the values from one dimension to zero. As above, I just want to set the 'z' values to 0 if they are less than one. This works: foo <- array(rnorm(24), dim=c(4,3,2)) dimnames(foo) <-list(NULL,c('x','y','z'),c('Experiment1','Experiment2')) foo[,'z',] #How can I set foo[,'z',]<0 to 0 for(i in 1:2){ foo[foo[,'z',i]<0,'z',i] = 0 } foo But it seems like one should be able to do this with apply or just '['. I'm at a loss. -A _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo