| gapply {sna} | R Documentation |
Returns a vector or array or list of values obtained by applying a function to vertex neighborhoods of a given order.
gapply(X, MARGIN, STATS, FUN, ..., mode = "digraph", diag = FALSE,
distance = 1, thresh = 0, simplify = TRUE)
X |
one or more input graphs. |
MARGIN |
a vector giving the ``margin'' of X to be used in calculating neighborhoods. 1 indicates rows (out-neighbors), 2 indicates columns (in-neighbors), and c(1,2) indicates rows and columns (total neighborhood). |
STATS |
the vector or matrix of vertex statistics to be used. |
FUN |
the function to be applied. In the case of operators, the function name must be quoted. |
... |
additional arguments to FUN. |
mode |
"graph" if X is a simple graph, else "digraph". |
diag |
boolean; are the diagonals of X meaningful? |
distance |
the maximum geodesic distance at which neighborhoods are to be taken. 1 signifies first-order neighborhoods, 2 signifies second-order neighborhoods, etc. |
thresh |
the threshold to be used in dichotomizing X. |
simplify |
boolean; should we attempt to coerce output to a vector if possible? |
For each vertex in X, gapply first identifies all members of the relevant neighborhood (as determined by MARGIN and distance) and pulls the rows of STATS associated with each. FUN is then applied to this collection of values. This provides a very quick and easy way to answer questions like:
With clever use of FUN and STATS, a wide range of functionality can be obtained.
The result of the iterated application of FUN to each vertex neighborhood's STATS.
Carter T. Butts buttsc@uci.edu
#Generate a random graph g<-rgraph(6) #Calculate the degree of g using gapply all(gapply(g,1,rep(1,6),sum)==degree(g,cmode="outdegree")) all(gapply(g,2,rep(1,6),sum)==degree(g,cmode="degree")) all(gapply(g,c(1,2),rep(1,6),sum)==degree(symmetrize(g),cmode="freeman")/2) #Find first and second order neighborhood means on some variable gapply(g,c(1,2),1:6,mean) gapply(g,c(1,2),1:6,mean,distance=2)