[R-sig-Geo] spdep: show neighbors from "dnearneigh"

Roger Bivand Roger.Bivand at nhh.no
Sat Mar 5 19:02:41 CET 2011


On Fri, 4 Mar 2011, Kevin Ringelman wrote:

> I am having trouble viewing the list of neighbors ("regions IDs") after
> created a nb object using the "dnearneigh" function in spdep.  I only seem
> to get a summary (with # regions, # non-zero links, etc.).  This nb object
> also doesn't take well to being converted to another type of object, or
> exported from R.  How I view the list of neighbors?
>

In S and R, objects with a class attribute, such as "nb" objects, may have 
display methods specific to the class. If you just say:

> nb

then this is expanded internally to print(nb), and since nb is an object 
of class "nb", the print.nb() method is chosen. If you want the default 
print method, call it as print.default(nb). Conversion of objects of one 
class to another class may be done by coercion where coercion methods are 
provided. No such methods are available for nb objects. There are 
functions to do things like this, but not methods. For example, to make an 
nb object into a row-standardised matrix, you might do:

> Wmat <- nb2mat(nb, style="W")

but you should avoid this if your number of observations is large. To make 
a sparse matrix, several steps are required:

> lw <- nb2listw(nb, style="W")
> spWmat <- as(as_dgRMatrix_listw(lw), "CsparseMatrix")

using the nb2listw() and (ugly name) as_dgRMatrix_listw() functions, and 
coercion from one representation to another using new-style classes 
defined in the Matrix package.

>
>
> Some additional background: I'm identifying all neighboring bird nests
> within 100m of each nest.  For this particular analysis, I ultimately want
> to calculate the average vegetation height of neighboring nests to compare
> with the focal nest.  This will involve generating a list of neighbors, and
> merging that list with my other data.
>

Note that an nb object is a list - to nuke the class, do:

> class(nb) <- NULL

which lets you call print.default(), but to get at the attribute you want, 
just do:

> attr(nb, "region.id")

to call print.default on the character vector it contains.

Hope this clarifies,

Roger

>
>
> Thanks,
>
> Kevin
>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the R-sig-Geo mailing list