Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

network.extraction

Extraction and Replacement Operators for Network Objects


Description

Various operators which allow extraction or replacement of various components of a network object.

Usage

## S3 method for class 'network'
x[i, j, na.omit = FALSE]

## S3 replacement method for class 'network'
x[i, j, names.eval = NULL,
  add.edges = FALSE] <- value

x %e% attrname

x %e% attrname <- value

x %eattr% attrname

x %eattr% attrname <- value

x %n% attrname

x %n% attrname <- value

x %nattr% attrname

x %nattr% attrname <- value

x %v% attrname

x %v% attrname <- value

x %vattr% attrname

x %vattr% attrname <- value

Arguments

x

an object of class network.

i, j

indices of the vertices with respect to which adjacency is to be tested. Empty values indicate that all vertices should be employed (see below).

na.omit

logical; should missing edges be omitted (treated as no-adjacency), or should NAs be returned? (Default: return NA on missing.)

names.eval

optionally, the name of an edge attribute to use for assigning edge values.

add.edges

logical; should new edges be added to x where edges are absent and the appropriate element of value is non-zero?

value

the value (or set thereof) to be assigned to the selected element of x.

attrname

the name of a network or vertex attribute (as appropriate).

Details

Indexing for edge extraction operates in a manner analogous to matrix objects. Thus, x[,] selects all vertex pairs, x[1,-5] selects the pairing of vertex 1 with all vertices except for 5, etc. Following this, it is acceptable for i and/or j to be logical vectors indicating which vertices are to be included. During assignment, an attempt is made to match the elements of value to the extracted pairs in an intelligent way; in particular, elements of value will be replicated if too few are supplied (allowing expressions like x[1,]<-1). Where names.eval==NULL, zero and non-zero values are taken to indicate the presence of absence of edges. x[2,4]<-6 thus adds a single (2,4) edge to x, and x[2,4]<-0 removes such an edge (if present). If x is multiplex, assigning 0 to a vertex pair will eliminate all edges on that pair. Pairs are taken to be directed where is.directed(x)==TRUE, and undirected where is.directed(x)==FALSE.

If an edge attribute is specified using names.eval, then the provided values will be assigned to that attribute. When assigning values, only extant edges are employed (unless add.edges==TRUE); in the latter case, any non-zero assignment results in the addition of an edge where currently absent. If the attribute specified is not present on a given edge, it is added. Otherwise, any existing value is overwritten. The %e% operator can also be used to extract/assign edge values; in those roles, it is respectively equivalent to get.edge.value(x,attrname) and set.edge.value(x,attrname=attrname,value=value) (if value is a matrix) and set.edge.attribute(x,attrname=attrname,value=value) (if value is anything else). That is, if value is a matrix, the assignment operator treats it as an adjacency matrix; and if not, it treats it as a vector (recycled as needed) in the internal ordering of edges (i.e., edge IDs), skipping over deleted edges. In no case will attributes be assigned to nonexisted edges.

The %n% and %v% operators serve as front-ends to the network and vertex extraction/assignment functions (respectively). In the extraction case, x %n% attrname is equivalent to get.network.attribute(x,attrname), with x %v% attrname corresponding to get.vertex.attribute(x,attrname). In assignment, the respective equivalences are to set.network.attribute(x,attrname,value) and set.vertex.attribute(x,attrname,value). Note that the “%%” assignment forms are generally slower than the named versions of the functions beause they will trigger an additional internal copy of the network object.

The %eattr%, %nattr%, and %vattr% operators are equivalent to %e%, %n%, and %v% (respectively). The short forms are more succinct, but may produce less readable code.

Value

The extracted data, or none.

Author(s)

Carter T. Butts buttsc@uci.edu

References

Butts, C. T. (2008). “network: a Package for Managing Relational Data in R.” Journal of Statistical Software, 24(2). https://www.jstatsoft.org/v24/i02/

See Also

Examples

#Create a random graph (inefficiently)
  g<-network.initialize(10)
  g[,]<-matrix(rbinom(100,1,0.1),10,10)
  plot(g)
  
  #Demonstrate edge addition/deletion
  g[,]<-0
  g[1,]<-1
  g[2:3,6:7]<-1
  g[,]
  
  #Set edge values
  g[,,names.eval="boo"]<-5
  as.sociomatrix(g,"boo")
  #Assign edge values from a vector
  g %e% "hoo" <- "wah"
  g %e% "hoo"
  g %e% "om" <- c("wow","whee")
  g %e% "om"
  #Assign edge values as a sociomatrix
  g %e% "age" <- matrix(1:100, 10, 10)
  g %e% "age"
  as.sociomatrix(g,"age")

  #Set/retrieve network and vertex attributes
  g %n% "blah" <- "Pork!"                 #The other white meat?
  g %n% "blah" == "Pork!"                 #TRUE!
  g %v% "foo" <- letters[10:1]            #Letter the vertices
  g %v% "foo" == letters[10:1]            #All TRUE

network

Classes for Relational Data

v1.16.1
GPL (>= 2)
Authors
Carter T. Butts [aut, cre], David Hunter [ctb], Mark Handcock [ctb], Skye Bender-deMoll [ctb], Jeffrey Horner [ctb], Li Wang [ctb]
Initial release
2020-10-06

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.