Skip to content
Prev 11256 / 29559 Next

spdep: show neighbors from "dnearneigh"

Thanks for your help Roger.  I have a couple more questions.

print.default(nb) shows me what I'm looking for: for each region, I see the
regions that are within my distance band.  For example:

[[1]]
 [1]   2  10  11  15  17  18  19  32  40 554

[[2]]
 [1]   1  15  17  21  33  34 426 511 554 557

I want to make this information into a table, with the focal regions as
column 1, and the region IDs of it's neighbors as column 2 (similar to
neighbor analysis output in ArcGIS).  Continuing the example from above:
1	2
1	10
1	11
1	15
1	17
(etc.)

Even after I nuke the nb class
U <- unclass(nb)
I still can't access or manipulate the data...it doesn't appear as an
attribute
attribute(U)

Any suggestions?





-----Original Message-----
From: Roger Bivand [mailto:Roger.Bivand at nhh.no] 
Sent: Saturday, March 05, 2011 10:03 AM
To: Kevin Ringelman
Cc: r-sig-geo at r-project.org
Subject: Re: [R-sig-Geo] spdep: show neighbors from "dnearneigh"
On Fri, 4 Mar 2011, Kevin Ringelman wrote:

            
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:
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:
but you should avoid this if your number of observations is large. To make 
a sparse matrix, several steps are required:
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.
and
Note that an nb object is a list - to nuke the class, do:
which lets you call print.default(), but to get at the attribute you want, 
just do:
to call print.default on the character vector it contains.

Hope this clarifies,

Roger