OOPS! I appear to have misunderstood the question then, Ben. I'm unsure how to increment a particular cell more than once.
Please pardon the noise. On Sun, Jul 10, 2016 at 7:54 PM, Ben Tupper <btup...@bigelow.org> wrote: > Hi, > > Interesting. How would you use the matrix approach to increment a > particular cell more than once with a single subassignment? If I repeat > the upper left raster coord in the matrix 3 times it still yields a value > of 1 up there. > > library(raster) > r <- raster(nrows=5,ncols=5) > r[] <- 0 > idx <- matrix(c(1,1,1,1,1,1,1,5,5,1,5,5),ncol=2,byrow=TRUE) > r[idx] <- r[idx] + 1 > plot(r) > range(getValues(r)) > #[1] 0 1 > > I could be misreading the original posting, but I think the desire is that > the result will be increment for each repeated index using just one > subassignment. > > Cheers, > Ben > > > On Jul 10, 2016, at 6:45 PM, Vijay Lulla <vijaylu...@gmail.com> wrote: > > Maybe something like this? > > R> r <- raster(nrows=5,ncols=5) > R> r[] <- 0 > R> idx <- matrix(c(1,1,1,5,5,1,5,5),ncol=2,byrow=TRUE) # four corners of > the raster! > R> r[idx] <- r[idx] + 1 > R> image(r) > > From R's ?`[` : When indexing arrays by '[' a single argument 'i' can be a > matrix with as many columns as there are dimensions of 'x'; the result is > then a vector with elements corresponding to the sets of indices in each > row of 'i'. > > > On Sun, Jul 10, 2016 at 5:59 PM, Ben Tupper <btup...@bigelow.org> wrote: > >> Hi, >> >> I stub my toe on this all the time (and wish I didn't). The behavior >> isn't limited to raster - the replacement operator `[` in general doesn't >> update the left had side like my wild imagination might allow. It's just a >> function and so it must make a copy of the input. >> >> This note seen here ?`[` sort of points out the issue... "Subassignment >> is done sequentially, so if an index is specified more than once the latest >> assigned value for an index will result." Between that, the phase of the >> moon and the pass-by-value stuff my brain starts to jumble. >> >> On the other hand, if you have dependable indices and are simply >> incrementing you can leverage table() for your purpose. >> >> x <- rep(0,5) >> i <- c(1,1,1,4) >> ti <- table(i) >> tindex <- as.numeric(names(ti)) >> x[tindex] <- x[tindex] + ti >> >> Likewise for raster >> >> library(raster) >> r <- raster(ncol=5,nrow=5) >> r[] <- 0 >> vec <- c(1,1,1,3,4,5,6,7,8,8,8,9) >> tvec <- table(vec) >> tindex <- as.integer(names(tvec)) >> r[tindex] <- r[tindex] + tvec >> >> I hope there are smarter/faster ways, but in the meantime it might speed >> things along for you. >> >> >> Ben >> >> >> > On Jul 10, 2016, at 3:34 PM, Giacomo May <giacomo_ma...@gmx.de> wrote: >> > >> > Dear R-users, >> > I am trying to add +1 to the cell value of certain cells in a raster. I >> have the cell numbers of the cells on which I'd like to perform said >> computation saved in a vector. I have a working code but with a large >> vector and raster it takes ages: >> > >> > r <- raster(ncol=5,nrow=5) >> > r[] <- 0 >> > vec <- c(1,1,1,3,4,5,6,7,8,8,8,9) >> > for(i in 1:length(vec)) >> > { >> > r[vec[i]] <- r[vec[i]] + 1 >> > } >> > >> > I have already tried to use r[vec] <- r[vec] + 1 but that doesn't work >> properly, it just sets the values of the cells stored in the vector to 1. >> Does anybody know a faster way to do this ? Thanks in advance! >> > >> > _______________________________________________ >> > R-sig-Geo mailing list >> > R-sig-Geo@r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> >> Ben Tupper >> Bigelow Laboratory for Ocean Sciences >> 60 Bigelow Drive, P.O. Box 380 >> East Boothbay, Maine 04544 >> http://www.bigelow.org >> >> Report Gulf of Maine jellyfish sightings to jellyf...@bigelow.org or >> tweet them to #MaineJellies -- include date, time, and location, as well as >> any descriptive information such as size or type. Learn more at >> https://www.bigelow.org/research/srs/nick-record/nick-record-laboratory/mainejellies/ >> >> _______________________________________________ >> R-sig-Geo mailing list >> R-sig-Geo@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> > > > Ben Tupper > Bigelow Laboratory for Ocean Sciences > 60 Bigelow Drive, P.O. Box 380 > East Boothbay, Maine 04544 > http://www.bigelow.org > > Report Gulf of Maine jellyfish sightings to jellyf...@bigelow.org > or tweet them to #MaineJellies -- include date, time, and location, as well > as any descriptive information such as size or type. Learn more at > https://www.bigelow.org/research/srs/nick-record/nick-record-laboratory/mainejellies/ > > [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo