R: Add Edges to a Network Object

add.edges {network} | R Documentation

## Add Edges to a Network Object

### Description

Add one or more edges to an existing network object.

### Usage

    add.edge(x, tail, head, names.eval=NULL, vals.eval=NULL,
        edge.check=FALSE, ...)
    add.edges(x, tail, head, names.eval=NULL, vals.eval=NULL, ...)

### Arguments

`x` | an object of class `network`
`tail` | for `add.edge`, a vector of vertex IDs reflecting the tail set for the edge to be added; for `add.edges`, a list of such vectors
`head` | for `add.edge`, a vector of vertex IDs reflecting the head set for the edge to be added; for `add.edges`, a list of such vectors
`names.eval` | for `add.edge`, an optional list of names for edge attributes; for `add.edges`, a list of length equal to the number of edges, with each element containing a list of names for the attributes of the corresponding edge
`vals.eval` | for `add.edge`, an optional list of edge attribute values (matching `names.eval`); for `add.edges`, a list of such lists
`edge.check` | logical; should we perform (computationally expensive) tests to check for the legality of submitted edges?
`...` | additional arguments

### Details

The edge checking procedure is very slow, but should always be employed when debugging; without it, one cannot guarantee that the network state is consistent with network level variables (see `network.indicators`). For example, by default it is possible to add multiple edges to a pair of vertices.

Edges can also be added/removed via the extraction/replacement operators. See the associated man page for details.

### Value

Invisibly, `add.edge` and `add.edges` return pointers to their modified arguments; both functions modify their arguments in place..

### Note

`add.edges` and `add.edge` were converted to an S3 generic funtions in version 1.9, so they actually call `add.edges.network` and `add.edge.network` by default, and may call other versions depending on context (i.e. when called with a `networkDynamic` object).

### 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). http://www.jstatsoft.org/v24/i02/

### See Also

`network`, `add.vertices`, `network.extraction`, `delete.edges`, `network.edgelist`

### Examples

    #Initialize a small, empty network
    g<-network.initialize(3)

    #Add an edge
    add.edge(g,1,2)
    g

    #Can also add edges using the extraction/replacement operators
    #note that replacement operators are much slower than add.edges()
    g[,3]<-1
    g[,]

    #Add multiple edges with attributes to a network

    # pretend we just loaded in this data.frame from a file
    # Note: network.edgelist() may be simpler for this case
    elData<-data.frame(
      from_id=c("1","2","3","1","3","1","2"),
      to_id=c("1", "1", "1", "2", "2", "3", "3"),
      myEdgeWeight=c(1, 2, 1, 2, 5, 3, 9.5),
      someLetters=c("B", "W", "L", "Z", "P", "Q", "E"),
      edgeCols=c("red","green","blue","orange","pink","brown","gray"),
      stringsAsFactors=FALSE
    )

    valueNet<-network.initialize(3,loops=TRUE)

    add.edges(valueNet,elData[,1],elData[,2],
        names.eval=rep(list(list("myEdgeWeight","someLetters","edgeCols")),nrow(elData)),
        vals.eval=lapply(1:nrow(elData),function(r){as.list(elData[r,3:5])}))

    list.edge.attributes(valueNet)

[Package network version 1.15 Index]