[R-sig-Geo] How to Convert extract() results to 2D matrix

Robert J. Hijmans r.hijmans at gmail.com
Fri Dec 31 18:58:24 CET 2010

```Michael,

> How do I convert the extract() results, using the buffer method, to a 2D matrix
> for each point?

One way to do this now is to extract the cell numbers from a raster
with those numbers and construct the matrices from that. See example
below. To make this easier in the future, I have added a "cellnumbers"
argument to version 1.7-20 (as in extract with polygons).

library(raster)
r <- raster(ncol=180, nrow=90)

rvals <- setValues(r, runif(ncell(r)))
rcell <- setValues(r, 1:ncell(r))
xy <- cbind(-50.5, seq(-40, 40, by=20))

v <- extract(rvals, xy, buffer=1000000)
cells <- extract(rcell, xy, buffer=1000000)

m <- list()
for (i in 1:length(cells)) {
x <- rasterFromCells(r, cells[[i]])
y <- data.frame(cells[[i]], v[[i]])
m[[i]] <- as.matrix(subs(x,y))
}

m

On Thu, Dec 30, 2010 at 6:43 AM, Michael ODonnell <odonnems at yahoo.com> wrote:
> I am using the extract() function within the R raster package and I am trying to
> both understand the output as well as figure out how to convert the output to a
> 2D matrix. So, I am using a SpatialPoints file and the method "buffer". The
> returned results represent rows, point location, and columns, pixel values
> extracted. Ultimately, I want to convert each record to a 2D matrix.
>
> Questions:
> How do I convert the extract() results, using the buffer method, to a 2D matrix
> for each point?
>
> Does the buffer method return pixels that fall within a radius (circle),

Yes

> and is the buffer defining a 2D array?  If extract returns pixels within a circle, does
> it assign NA to the pixels in the circle that fall outside the circle but reside
> within a 2D matrix (This is generally how most programs I work with handle
> this).

Only pixels within the circle are returned.

> What happens when a point falls near the edge of a raster dataset and the buffer
> distance exceeds the distance between the point and the edge of the raster--Are
> NAs returned or do these result in a non-square 2D array?

NAs are not returned unless the entire buffer is  outside the raster,
in which case you get a single NA value.

>
> Thank you for your help,
> Mike
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

```