Set up

library(igraph)

load('data/examples_for_videos.RData') # loads the networks we will use 

Network with undirected, unweighted edges

g_ud_uw
## IGRAPH 767ab4c UN-- 5 6 -- 
## + attr: name (v/c)
## + edges from 767ab4c (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network to adjacency matrix

am_ud_uw <- as_adjacency_matrix(graph = g_ud_uw)

am_ud_uw
## 5 x 5 sparse Matrix of class "dgCMatrix"
##       Alex Beth Chris Doug Eliza
## Alex     .    1     1    1     1
## Beth     1    .     .    1     .
## Chris    1    .     .    1     .
## Doug     1    1     1    .     .
## Eliza    1    .     .    .     .

Adjacency matrix to network

g_ud_uw_am <- graph_from_adjacency_matrix(adjmatrix = am_ud_uw, mode = 'undirected', weighted = NULL)

g_ud_uw_am
## IGRAPH 8aac838 UN-- 5 6 -- 
## + attr: name (v/c)
## + edges from 8aac838 (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network to edgelist

el_ud_uw <- as_edgelist(graph = g_ud_uw)

el_ud_uw
##      [,1]    [,2]   
## [1,] "Alex"  "Beth" 
## [2,] "Alex"  "Chris"
## [3,] "Alex"  "Doug" 
## [4,] "Alex"  "Eliza"
## [5,] "Beth"  "Doug" 
## [6,] "Chris" "Doug"

Edgelist to network

g_ud_uw_el <- graph_from_edgelist(el = el_ud_uw, directed = FALSE)

g_ud_uw_el
## IGRAPH 6fcbb8f UN-- 5 6 -- 
## + attr: name (v/c)
## + edges from 6fcbb8f (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network with undirected, weighted edges

g_ud_w
## IGRAPH 767ab4c UNW- 5 6 -- 
## + attr: name (v/c), weight (e/n)
## + edges from 767ab4c (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network to adjacency matrix

am_ud_w <- as_adjacency_matrix(graph = g_ud_w, attr = 'weight')

am_ud_w
## 5 x 5 sparse Matrix of class "dgCMatrix"
##       Alex Beth Chris Doug Eliza
## Alex     .    1     4    1     2
## Beth     1    .     .    5     .
## Chris    4    .     .    3     .
## Doug     1    5     3    .     .
## Eliza    2    .     .    .     .

Adjacency matrix to network

g_ud_w_am <- graph_from_adjacency_matrix(adjmatrix = am_ud_w, mode = 'undirected', 
                                         weighted = 'weight')

g_ud_w_am
## IGRAPH e738398 UNW- 5 6 -- 
## + attr: name (v/c), weight (e/n)
## + edges from e738398 (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network to edgelist

el_ud_w <- as_edgelist(graph = g_ud_w)

el_ud_w # weights are missing! 
##      [,1]    [,2]   
## [1,] "Alex"  "Beth" 
## [2,] "Alex"  "Chris"
## [3,] "Alex"  "Doug" 
## [4,] "Alex"  "Eliza"
## [5,] "Beth"  "Doug" 
## [6,] "Chris" "Doug"
#first workaround 
cbind(as_edgelist(graph = g_ud_w), E(g_ud_w)$weight)
##      [,1]    [,2]    [,3]
## [1,] "Alex"  "Beth"  "1" 
## [2,] "Alex"  "Chris" "4" 
## [3,] "Alex"  "Doug"  "1" 
## [4,] "Alex"  "Eliza" "2" 
## [5,] "Beth"  "Doug"  "5" 
## [6,] "Chris" "Doug"  "3"
el_ud_w <- cbind(as_edgelist(graph = g_ud_w), E(g_ud_w)$weight) # for the next chunk 

# second workaround 
get.data.frame(x = g_ud_w, what = 'edges')

Edgelist to network

# we cannot use graph_from_edgelist to create a weighted network as there is no argument to specify weights 

# data frame
el_ud_w <- as.data.frame(el_ud_w)
colnames(el_ud_w)[3] <- 'weight' # relabel the 3rd column as 'weight' 

g_ud_uw_el <- graph_from_data_frame(d = el_ud_w, directed = FALSE, vertices = NULL)

g_ud_uw_el
## IGRAPH 5ce81d8 UNW- 5 6 -- 
## + attr: name (v/c), weight (e/c)
## + edges from 5ce81d8 (vertex names):
## [1] Alex --Beth  Alex --Chris Alex --Doug  Alex --Eliza Beth --Doug 
## [6] Chris--Doug

Network with directed, unweighted edges

g_d_uw
## IGRAPH 56acf83 DN-- 5 6 -- 
## + attr: name (v/c)
## + edges from 56acf83 (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Alex ->Eliza Beth ->Doug 
## [6] Chris->Doug

Network to adjacency matrix

am_d_uw <- as_adjacency_matrix(graph = g_d_uw)

am_d_uw
## 5 x 5 sparse Matrix of class "dgCMatrix"
##       Alex Beth Chris Doug Eliza
## Alex     .    1     1    1     1
## Beth     .    .     .    1     .
## Chris    .    .     .    1     .
## Doug     .    .     .    .     .
## Eliza    .    .     .    .     .

Adjacency matrix to network

g_d_uw_am <- graph_from_adjacency_matrix(adjmatrix = am_d_uw, mode = 'directed', weighted = NULL)

g_d_uw_am
## IGRAPH 14a3b55 DN-- 5 6 -- 
## + attr: name (v/c)
## + edges from 14a3b55 (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Beth ->Doug  Chris->Doug 
## [6] Alex ->Eliza

Network to edgelist

el_d_uw <- as_edgelist(graph = g_ud_uw)

el_d_uw # this is not different from el_ud_uw! but your interpretation of the data is different.
##      [,1]    [,2]   
## [1,] "Alex"  "Beth" 
## [2,] "Alex"  "Chris"
## [3,] "Alex"  "Doug" 
## [4,] "Alex"  "Eliza"
## [5,] "Beth"  "Doug" 
## [6,] "Chris" "Doug"

Edgelist to network

g_d_uw_el <- graph_from_edgelist(el = el_d_uw, directed = TRUE)

g_d_uw_el
## IGRAPH b73b15d DN-- 5 6 -- 
## + attr: name (v/c)
## + edges from b73b15d (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Alex ->Eliza Beth ->Doug 
## [6] Chris->Doug

Network with directed, weighted edges

g_d_w
## IGRAPH 56acf83 DNW- 5 6 -- 
## + attr: name (v/c), weight (e/n)
## + edges from 56acf83 (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Alex ->Eliza Beth ->Doug 
## [6] Chris->Doug

Network to adjacency matrix

am_d_w <- as_adjacency_matrix(graph = g_d_w, attr = 'weight')

am_d_w
## 5 x 5 sparse Matrix of class "dgCMatrix"
##       Alex Beth Chris Doug Eliza
## Alex     .    5     1    5     1
## Beth     .    .     .    4     .
## Chris    .    .     .    5     .
## Doug     .    .     .    .     .
## Eliza    .    .     .    .     .

Adjacency matrix to network

g_d_w_am <- graph_from_adjacency_matrix(adjmatrix = am_d_w, mode = 'directed', weighted = 'weight')

g_d_w_am
## IGRAPH c462bc7 DNW- 5 6 -- 
## + attr: name (v/c), weight (e/n)
## + edges from c462bc7 (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Beth ->Doug  Chris->Doug 
## [6] Alex ->Eliza

Network to edgelist

el_d_w <- as_edgelist(graph = g_d_w)

el_d_w # we run into the same problem as before - the weights are missing
##      [,1]    [,2]   
## [1,] "Alex"  "Beth" 
## [2,] "Alex"  "Chris"
## [3,] "Alex"  "Doug" 
## [4,] "Alex"  "Eliza"
## [5,] "Beth"  "Doug" 
## [6,] "Chris" "Doug"
#first workaround 
cbind(as_edgelist(graph = g_d_w), E(g_d_w)$weight)
##      [,1]    [,2]    [,3]
## [1,] "Alex"  "Beth"  "5" 
## [2,] "Alex"  "Chris" "1" 
## [3,] "Alex"  "Doug"  "5" 
## [4,] "Alex"  "Eliza" "1" 
## [5,] "Beth"  "Doug"  "4" 
## [6,] "Chris" "Doug"  "5"
el_d_w <- cbind(as_edgelist(graph = g_d_w), E(g_d_w)$weight) # for the next chunk 

# second workaround 
get.data.frame(x = g_d_w, what = 'edges')

Edgelist to network

# we cannot use graph_from_edgelist to create a weighted network as there is no argument to specify weights 

# data frame
el_d_w <- as.data.frame(el_d_w)
colnames(el_d_w)[3] <- 'weight' # relabel the 3rd column as 'weight' 

g_d_w_el <- graph_from_data_frame(d = el_d_w, directed = TRUE, vertices = NULL)

g_d_w_el
## IGRAPH 988a5c0 DNW- 5 6 -- 
## + attr: name (v/c), weight (e/c)
## + edges from 988a5c0 (vertex names):
## [1] Alex ->Beth  Alex ->Chris Alex ->Doug  Alex ->Eliza Beth ->Doug 
## [6] Chris->Doug

Appendix

Code chunk to generate the example networks.

g_ud_uw <- graph_from_literal(Alex-Beth, 
                        Chris-Doug, Eliza-Alex, 
                        Beth-Doug, Alex-Chris,
                        Doug-Alex)

g_ud_w <- g_ud_uw
set.seed(1)
E(g_ud_w)$weight <- sample(1:5, 6, replace = T)

g_d_uw <- as.directed(g_ud_uw, mode = 'arbitrary') 

g_d_w <- g_d_uw
set.seed(2)
E(g_d_w)$weight <- sample(1:5, 6, replace = T)

save(g_ud_uw, g_ud_w, g_d_uw, g_d_w, file = 'examples_for_video1.RData')
LS0tCnRpdGxlOiAnUEw0MjQ2IE5ldHdvcmtzIGluIFBzeWNob2xvZ3k6IFR1dG9yaWFsIDEnCmF1dGhvcjogIkRyLiBDeW50aGlhIFMuIFEuIFNpZXciCnN1YnRpdGxlOiAnVmlkZW8gMjogQWRqYWNlbmN5IE1hdHJpY2VzIGFuZCBFZGdlIExpc3RzJwpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKLS0tCiMgU2V0IHVwIAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KG1lc3NhZ2UgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KHdhcm5pbmcgPSBGQUxTRSkKYGBgCgpgYGB7ciBsb2FkLWxpYnJhcmllc30KbGlicmFyeShpZ3JhcGgpCgpsb2FkKCdkYXRhL2V4YW1wbGVzX2Zvcl92aWRlb3MuUkRhdGEnKSAjIGxvYWRzIHRoZSBuZXR3b3JrcyB3ZSB3aWxsIHVzZSAKYGBgCgoKIyBOZXR3b3JrIHdpdGggdW5kaXJlY3RlZCwgdW53ZWlnaHRlZCBlZGdlcyAKCmBgYHtyfQpnX3VkX3V3CmBgYAoKIyMgTmV0d29yayB0byBhZGphY2VuY3kgbWF0cml4IAoKYGBge3J9CmFtX3VkX3V3IDwtIGFzX2FkamFjZW5jeV9tYXRyaXgoZ3JhcGggPSBnX3VkX3V3KQoKYW1fdWRfdXcKYGBgCgojIyBBZGphY2VuY3kgbWF0cml4IHRvIG5ldHdvcmsgCgpgYGB7cn0KZ191ZF91d19hbSA8LSBncmFwaF9mcm9tX2FkamFjZW5jeV9tYXRyaXgoYWRqbWF0cml4ID0gYW1fdWRfdXcsIG1vZGUgPSAndW5kaXJlY3RlZCcsIHdlaWdodGVkID0gTlVMTCkKCmdfdWRfdXdfYW0KYGBgCgojIyBOZXR3b3JrIHRvIGVkZ2VsaXN0IAoKYGBge3J9CmVsX3VkX3V3IDwtIGFzX2VkZ2VsaXN0KGdyYXBoID0gZ191ZF91dykKCmVsX3VkX3V3CmBgYAoKIyMgRWRnZWxpc3QgdG8gbmV0d29yayAKCmBgYHtyfQpnX3VkX3V3X2VsIDwtIGdyYXBoX2Zyb21fZWRnZWxpc3QoZWwgPSBlbF91ZF91dywgZGlyZWN0ZWQgPSBGQUxTRSkKCmdfdWRfdXdfZWwKYGBgCgoKIyBOZXR3b3JrIHdpdGggdW5kaXJlY3RlZCwgd2VpZ2h0ZWQgZWRnZXMgCgpgYGB7cn0KZ191ZF93CmBgYAoKIyMgTmV0d29yayB0byBhZGphY2VuY3kgbWF0cml4IAoKYGBge3J9CmFtX3VkX3cgPC0gYXNfYWRqYWNlbmN5X21hdHJpeChncmFwaCA9IGdfdWRfdywgYXR0ciA9ICd3ZWlnaHQnKQoKYW1fdWRfdwpgYGAKCiMjIEFkamFjZW5jeSBtYXRyaXggdG8gbmV0d29yayAKCmBgYHtyfQpnX3VkX3dfYW0gPC0gZ3JhcGhfZnJvbV9hZGphY2VuY3lfbWF0cml4KGFkam1hdHJpeCA9IGFtX3VkX3csIG1vZGUgPSAndW5kaXJlY3RlZCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodGVkID0gJ3dlaWdodCcpCgpnX3VkX3dfYW0KYGBgCgojIyBOZXR3b3JrIHRvIGVkZ2VsaXN0IAoKYGBge3J9CmVsX3VkX3cgPC0gYXNfZWRnZWxpc3QoZ3JhcGggPSBnX3VkX3cpCgplbF91ZF93ICMgd2VpZ2h0cyBhcmUgbWlzc2luZyEgCgojZmlyc3Qgd29ya2Fyb3VuZCAKY2JpbmQoYXNfZWRnZWxpc3QoZ3JhcGggPSBnX3VkX3cpLCBFKGdfdWRfdykkd2VpZ2h0KQoKZWxfdWRfdyA8LSBjYmluZChhc19lZGdlbGlzdChncmFwaCA9IGdfdWRfdyksIEUoZ191ZF93KSR3ZWlnaHQpICMgZm9yIHRoZSBuZXh0IGNodW5rIAoKIyBzZWNvbmQgd29ya2Fyb3VuZCAKZ2V0LmRhdGEuZnJhbWUoeCA9IGdfdWRfdywgd2hhdCA9ICdlZGdlcycpCmBgYAoKIyMgRWRnZWxpc3QgdG8gbmV0d29yayAKCmBgYHtyfQojIHdlIGNhbm5vdCB1c2UgZ3JhcGhfZnJvbV9lZGdlbGlzdCB0byBjcmVhdGUgYSB3ZWlnaHRlZCBuZXR3b3JrIGFzIHRoZXJlIGlzIG5vIGFyZ3VtZW50IHRvIHNwZWNpZnkgd2VpZ2h0cyAKCiMgZGF0YSBmcmFtZQplbF91ZF93IDwtIGFzLmRhdGEuZnJhbWUoZWxfdWRfdykKY29sbmFtZXMoZWxfdWRfdylbM10gPC0gJ3dlaWdodCcgIyByZWxhYmVsIHRoZSAzcmQgY29sdW1uIGFzICd3ZWlnaHQnIAoKZ191ZF91d19lbCA8LSBncmFwaF9mcm9tX2RhdGFfZnJhbWUoZCA9IGVsX3VkX3csIGRpcmVjdGVkID0gRkFMU0UsIHZlcnRpY2VzID0gTlVMTCkKCmdfdWRfdXdfZWwKYGBgCgoKIyBOZXR3b3JrIHdpdGggZGlyZWN0ZWQsIHVud2VpZ2h0ZWQgZWRnZXMgCgpgYGB7cn0KZ19kX3V3CmBgYAoKIyMgTmV0d29yayB0byBhZGphY2VuY3kgbWF0cml4IAoKYGBge3J9CmFtX2RfdXcgPC0gYXNfYWRqYWNlbmN5X21hdHJpeChncmFwaCA9IGdfZF91dykKCmFtX2RfdXcKYGBgCgojIyBBZGphY2VuY3kgbWF0cml4IHRvIG5ldHdvcmsgCgpgYGB7cn0KZ19kX3V3X2FtIDwtIGdyYXBoX2Zyb21fYWRqYWNlbmN5X21hdHJpeChhZGptYXRyaXggPSBhbV9kX3V3LCBtb2RlID0gJ2RpcmVjdGVkJywgd2VpZ2h0ZWQgPSBOVUxMKQoKZ19kX3V3X2FtCmBgYAoKIyMgTmV0d29yayB0byBlZGdlbGlzdCAKCmBgYHtyfQplbF9kX3V3IDwtIGFzX2VkZ2VsaXN0KGdyYXBoID0gZ191ZF91dykKCmVsX2RfdXcgIyB0aGlzIGlzIG5vdCBkaWZmZXJlbnQgZnJvbSBlbF91ZF91dyEgYnV0IHlvdXIgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGRhdGEgaXMgZGlmZmVyZW50LgpgYGAKCiMjIEVkZ2VsaXN0IHRvIG5ldHdvcmsgCgpgYGB7cn0KZ19kX3V3X2VsIDwtIGdyYXBoX2Zyb21fZWRnZWxpc3QoZWwgPSBlbF9kX3V3LCBkaXJlY3RlZCA9IFRSVUUpCgpnX2RfdXdfZWwKYGBgCgoKIyBOZXR3b3JrIHdpdGggZGlyZWN0ZWQsIHdlaWdodGVkIGVkZ2VzIAoKYGBge3J9CmdfZF93CmBgYAoKIyMgTmV0d29yayB0byBhZGphY2VuY3kgbWF0cml4IAoKYGBge3J9CmFtX2RfdyA8LSBhc19hZGphY2VuY3lfbWF0cml4KGdyYXBoID0gZ19kX3csIGF0dHIgPSAnd2VpZ2h0JykKCmFtX2RfdwpgYGAKCiMjIEFkamFjZW5jeSBtYXRyaXggdG8gbmV0d29yayAKCmBgYHtyfQpnX2Rfd19hbSA8LSBncmFwaF9mcm9tX2FkamFjZW5jeV9tYXRyaXgoYWRqbWF0cml4ID0gYW1fZF93LCBtb2RlID0gJ2RpcmVjdGVkJywgd2VpZ2h0ZWQgPSAnd2VpZ2h0JykKCmdfZF93X2FtCmBgYAoKIyMgTmV0d29yayB0byBlZGdlbGlzdCAKCmBgYHtyfQplbF9kX3cgPC0gYXNfZWRnZWxpc3QoZ3JhcGggPSBnX2RfdykKCmVsX2RfdyAjIHdlIHJ1biBpbnRvIHRoZSBzYW1lIHByb2JsZW0gYXMgYmVmb3JlIC0gdGhlIHdlaWdodHMgYXJlIG1pc3NpbmcKCiNmaXJzdCB3b3JrYXJvdW5kIApjYmluZChhc19lZGdlbGlzdChncmFwaCA9IGdfZF93KSwgRShnX2Rfdykkd2VpZ2h0KQoKZWxfZF93IDwtIGNiaW5kKGFzX2VkZ2VsaXN0KGdyYXBoID0gZ19kX3cpLCBFKGdfZF93KSR3ZWlnaHQpICMgZm9yIHRoZSBuZXh0IGNodW5rIAoKIyBzZWNvbmQgd29ya2Fyb3VuZCAKZ2V0LmRhdGEuZnJhbWUoeCA9IGdfZF93LCB3aGF0ID0gJ2VkZ2VzJykKYGBgCgojIyBFZGdlbGlzdCB0byBuZXR3b3JrIAoKYGBge3J9CiMgd2UgY2Fubm90IHVzZSBncmFwaF9mcm9tX2VkZ2VsaXN0IHRvIGNyZWF0ZSBhIHdlaWdodGVkIG5ldHdvcmsgYXMgdGhlcmUgaXMgbm8gYXJndW1lbnQgdG8gc3BlY2lmeSB3ZWlnaHRzIAoKIyBkYXRhIGZyYW1lCmVsX2RfdyA8LSBhcy5kYXRhLmZyYW1lKGVsX2RfdykKY29sbmFtZXMoZWxfZF93KVszXSA8LSAnd2VpZ2h0JyAjIHJlbGFiZWwgdGhlIDNyZCBjb2x1bW4gYXMgJ3dlaWdodCcgCgpnX2Rfd19lbCA8LSBncmFwaF9mcm9tX2RhdGFfZnJhbWUoZCA9IGVsX2RfdywgZGlyZWN0ZWQgPSBUUlVFLCB2ZXJ0aWNlcyA9IE5VTEwpCgpnX2Rfd19lbApgYGAKCgojIEFwcGVuZGl4CgpDb2RlIGNodW5rIHRvIGdlbmVyYXRlIHRoZSBleGFtcGxlIG5ldHdvcmtzLiAKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0KZ191ZF91dyA8LSBncmFwaF9mcm9tX2xpdGVyYWwoQWxleC1CZXRoLCAKICAgICAgICAgICAgICAgICAgICAgICAgQ2hyaXMtRG91ZywgRWxpemEtQWxleCwgCiAgICAgICAgICAgICAgICAgICAgICAgIEJldGgtRG91ZywgQWxleC1DaHJpcywKICAgICAgICAgICAgICAgICAgICAgICAgRG91Zy1BbGV4KQoKZ191ZF93IDwtIGdfdWRfdXcKc2V0LnNlZWQoMSkKRShnX3VkX3cpJHdlaWdodCA8LSBzYW1wbGUoMTo1LCA2LCByZXBsYWNlID0gVCkKCmdfZF91dyA8LSBhcy5kaXJlY3RlZChnX3VkX3V3LCBtb2RlID0gJ2FyYml0cmFyeScpIAoKZ19kX3cgPC0gZ19kX3V3CnNldC5zZWVkKDIpCkUoZ19kX3cpJHdlaWdodCA8LSBzYW1wbGUoMTo1LCA2LCByZXBsYWNlID0gVCkKCnNhdmUoZ191ZF91dywgZ191ZF93LCBnX2RfdXcsIGdfZF93LCBmaWxlID0gJ2V4YW1wbGVzX2Zvcl92aWRlbzEuUkRhdGEnKQpgYGAK