Section-1

§ 1.1 How many Facebook users are there in our dataset?

nrow(users)
[1] 59

what is the average number of friends per user? Hint: this question is tricky, and it might help to start by thinking about a small example with two users who are friends

2*nrow(edges)/nrow(users)
[1] 4.949

§ 1.2 Out of all the students who listed a school, what was the most common locale?

table(users$locale)

 A  B 
 6 50 

§ 1.3 Is it possible that either school A or B is an all-girls or all-boys school?

table(users$gender, users$school)
   
     A AB
  A  3  1
  B 13  1
print("no")
[1] "no"

Section-2

§ 2.1
which of the following commands will create a graph g describing our social network, with the attributes of each user correctly loaded?

library(igraph)
g = graph.data.frame(d=edges, directed=FALSE, vertices=users)
print("g = graph.data.frame(edges, FALSE, users)")
[1] "g = graph.data.frame(edges, FALSE, users)"

§ 2.2 How many connected components with at least 2 nodes are there in the graph?

plot(g, vertex.size=5, vertex.label=NA)

How many connected components with at least 2 nodes are there in the graph?

print("4")
[1] "4"

How many users are there with no friends in the network?

print("7")
[1] "7"

§ 2.3 How many users are friends with 10 or more other Facebook users in this network?

sum(degree(g) >= 10)
[1] 9

§ 2.4

V(g)$size = degree(g)/2+2
plot(g, vertex.label=NA)

What is the largest size we assigned to any node in our graph? What is the smallest size we assigned to any node in our graph?

range(V(g)$size)
[1]  2 11

Section-3

§ 3.1 What is the gender of the users with the highest degree in the graph?

V(g)$color = "black"
V(g)$color[V(g)$gender == "A"] = "red"
V(g)$color[V(g)$gender == "B"] = "gray"
plot(g, vertex.label=NA)

print("Gender B")
[1] "Gender B"

§ 3.2 Are the two users who attended both schools A and B Facebook friends with each other?

par(mar=c(1,1,1,1))
V(g)$color = "gray"
V(g)$color[V(g)$school == "A"] = "green"
V(g)$color[V(g)$school == "AB"] = "red"
plot(g, vertex.label=NA)

print("Yes")
[1] "Yes"

What best describes the users with highest degree?

print("Some, but not all, of the high-degree users attended school A")
[1] "Some, but not all, of the high-degree users attended school A"

§ 3.3

par(mar=c(1,1,1,1))
V(g)$color = "gray"
V(g)$color[V(g)$locale == "A"] = "red"
V(g)$color[V(g)$locale == "B"] = "green"
plot(g, vertex.label=NA)

The large connected component is most associated with which locale?

print("B")
[1] "B"

The 4-user connected component is most associated with which locale?

print("A")
[1] "A"

Section-4

Which igraph plotting function would enable us to plot our graph in 3-D?

library(rgl)
rglplot(g, vertex.label=NA) # not working in windows

What parameter to the plot() function would we use to change the edge width when plotting g?

plot(g, edge.width=2, vertex.label=NA)

print("edge.width")
[1] "edge.width"
LS0tDQp0aXRsZTogIkFTNy0yIFZpc3VhbGl6aW5nIE5ldHdvcmsgRGF0YSINCmF1dGhvcjogIumZs+ato+isgCBsb3Vpc2FuMTIzIDIwMTgvMDcvMjkiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjIyAgU2VjdGlvbi0xDQpfX8KnIDEuMV9fIA0KSG93IG1hbnkgRmFjZWJvb2sgdXNlcnMgYXJlIHRoZXJlIGluIG91ciBkYXRhc2V0Pw0KYGBge3J9DQpucm93KHVzZXJzKQ0KYGBgDQp3aGF0IGlzIHRoZSBhdmVyYWdlIG51bWJlciBvZiBmcmllbmRzIHBlciB1c2VyPyBIaW50OiB0aGlzIHF1ZXN0aW9uIGlzIHRyaWNreSwgYW5kIGl0IG1pZ2h0IGhlbHAgdG8gc3RhcnQgYnkgdGhpbmtpbmcgYWJvdXQgYSBzbWFsbCBleGFtcGxlIHdpdGggdHdvIHVzZXJzIHdobyBhcmUgZnJpZW5kcw0KYGBge3J9DQoyKm5yb3coZWRnZXMpL25yb3codXNlcnMpDQpgYGANCg0KX1/CpyAxLjJfXw0KT3V0IG9mIGFsbCB0aGUgc3R1ZGVudHMgd2hvIGxpc3RlZCBhIHNjaG9vbCwgd2hhdCB3YXMgdGhlIG1vc3QgY29tbW9uIGxvY2FsZT8NCmBgYHtyfQ0KdGFibGUodXNlcnMkbG9jYWxlKQ0KYGBgDQoNCl9fwqcgMS4zX18NCklzIGl0IHBvc3NpYmxlIHRoYXQgZWl0aGVyIHNjaG9vbCBBIG9yIEIgaXMgYW4gYWxsLWdpcmxzIG9yIGFsbC1ib3lzIHNjaG9vbD8NCmBgYHtyfQ0KdGFibGUodXNlcnMkZ2VuZGVyLCB1c2VycyRzY2hvb2wpDQpwcmludCgibm8iKQ0KYGBgDQoNCiMjIyMgIFNlY3Rpb24tMg0KX1/CpyAyLjFfXyAgDQp3aGljaCBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHdpbGwgY3JlYXRlIGEgZ3JhcGggZyBkZXNjcmliaW5nIG91ciBzb2NpYWwgbmV0d29yaywgd2l0aCB0aGUgYXR0cmlidXRlcyBvZiBlYWNoIHVzZXIgY29ycmVjdGx5IGxvYWRlZD8NCmBgYHtyfQ0KbGlicmFyeShpZ3JhcGgpDQpnID0gZ3JhcGguZGF0YS5mcmFtZShkPWVkZ2VzLCBkaXJlY3RlZD1GQUxTRSwgdmVydGljZXM9dXNlcnMpDQpwcmludCgiZyA9IGdyYXBoLmRhdGEuZnJhbWUoZWRnZXMsIEZBTFNFLCB1c2VycykiKQ0KYGBgDQoNCl9fwqcgMi4yX18NCkhvdyBtYW55IGNvbm5lY3RlZCBjb21wb25lbnRzIHdpdGggYXQgbGVhc3QgMiBub2RlcyBhcmUgdGhlcmUgaW4gdGhlIGdyYXBoPw0KYGBge3J9DQpwbG90KGcsIHZlcnRleC5zaXplPTUsIHZlcnRleC5sYWJlbD1OQSkNCmBgYA0KDQpIb3cgbWFueSBjb25uZWN0ZWQgY29tcG9uZW50cyB3aXRoIGF0IGxlYXN0IDIgbm9kZXMgYXJlIHRoZXJlIGluIHRoZSBncmFwaD8NCmBgYHtyfQ0KcHJpbnQoIjQiKQ0KYGBgDQpIb3cgbWFueSB1c2VycyBhcmUgdGhlcmUgd2l0aCBubyBmcmllbmRzIGluIHRoZSBuZXR3b3JrPw0KYGBge3J9DQpwcmludCgiNyIpDQpgYGANCg0KX1/CpyAyLjNfXw0KSG93IG1hbnkgdXNlcnMgYXJlIGZyaWVuZHMgd2l0aCAxMCBvciBtb3JlIG90aGVyIEZhY2Vib29rIHVzZXJzIGluIHRoaXMgbmV0d29yaz8NCmBgYHtyfQ0Kc3VtKGRlZ3JlZShnKSA+PSAxMCkNCmBgYA0KDQpfX8KnIDIuNF9fDQoNCmBgYHtyfQ0KVihnKSRzaXplID0gZGVncmVlKGcpLzIrMg0KcGxvdChnLCB2ZXJ0ZXgubGFiZWw9TkEpDQpgYGANCldoYXQgaXMgdGhlIGxhcmdlc3Qgc2l6ZSB3ZSBhc3NpZ25lZCB0byBhbnkgbm9kZSBpbiBvdXIgZ3JhcGg/DQpXaGF0IGlzIHRoZSBzbWFsbGVzdCBzaXplIHdlIGFzc2lnbmVkIHRvIGFueSBub2RlIGluIG91ciBncmFwaD8NCmBgYHtyfQ0KcmFuZ2UoVihnKSRzaXplKQ0KYGBgDQoNCiMjIyMgIFNlY3Rpb24tMw0KX1/CpyAzLjFfXw0KV2hhdCBpcyB0aGUgZ2VuZGVyIG9mIHRoZSB1c2VycyB3aXRoIHRoZSBoaWdoZXN0IGRlZ3JlZSBpbiB0aGUgZ3JhcGg/DQpgYGB7cn0NClYoZykkY29sb3IgPSAiYmxhY2siDQpWKGcpJGNvbG9yW1YoZykkZ2VuZGVyID09ICJBIl0gPSAicmVkIg0KVihnKSRjb2xvcltWKGcpJGdlbmRlciA9PSAiQiJdID0gImdyYXkiDQpwbG90KGcsIHZlcnRleC5sYWJlbD1OQSkNCnByaW50KCJHZW5kZXIgQiIpDQpgYGANCg0KX1/CpyAzLjJfXw0KQXJlIHRoZSB0d28gdXNlcnMgd2hvIGF0dGVuZGVkIGJvdGggc2Nob29scyBBIGFuZCBCIEZhY2Vib29rIGZyaWVuZHMgd2l0aCBlYWNoIG90aGVyPw0KYGBge3J9DQpwYXIobWFyPWMoMSwxLDEsMSkpDQpWKGcpJGNvbG9yID0gImdyYXkiDQpWKGcpJGNvbG9yW1YoZykkc2Nob29sID09ICJBIl0gPSAiZ3JlZW4iDQpWKGcpJGNvbG9yW1YoZykkc2Nob29sID09ICJBQiJdID0gInJlZCINCnBsb3QoZywgdmVydGV4LmxhYmVsPU5BKQ0KcHJpbnQoIlllcyIpDQpgYGANCldoYXQgYmVzdCBkZXNjcmliZXMgdGhlIHVzZXJzIHdpdGggaGlnaGVzdCBkZWdyZWU/DQpgYGB7cn0NCnByaW50KCJTb21lLCBidXQgbm90IGFsbCwgb2YgdGhlIGhpZ2gtZGVncmVlIHVzZXJzIGF0dGVuZGVkIHNjaG9vbCBBIikNCmBgYA0KDQpfX8KnIDMuM19fDQpgYGB7cn0NCnBhcihtYXI9YygxLDEsMSwxKSkNClYoZykkY29sb3IgPSAiZ3JheSINClYoZykkY29sb3JbVihnKSRsb2NhbGUgPT0gIkEiXSA9ICJyZWQiDQpWKGcpJGNvbG9yW1YoZykkbG9jYWxlID09ICJCIl0gPSAiZ3JlZW4iDQpwbG90KGcsIHZlcnRleC5sYWJlbD1OQSkNCmBgYA0KVGhlIGxhcmdlIGNvbm5lY3RlZCBjb21wb25lbnQgaXMgbW9zdCBhc3NvY2lhdGVkIHdpdGggd2hpY2ggbG9jYWxlPw0KYGBge3J9DQpwcmludCgiQiIpDQpgYGANCg0KVGhlIDQtdXNlciBjb25uZWN0ZWQgY29tcG9uZW50IGlzIG1vc3QgYXNzb2NpYXRlZCB3aXRoIHdoaWNoIGxvY2FsZT8NCmBgYHtyfQ0KcHJpbnQoIkEiKQ0KYGBgDQoNCg0KIyMjIyAgU2VjdGlvbi00DQpXaGljaCBpZ3JhcGggcGxvdHRpbmcgZnVuY3Rpb24gd291bGQgZW5hYmxlIHVzIHRvIHBsb3Qgb3VyIGdyYXBoIGluIDMtRD8NCmBgYHtyfQ0KbGlicmFyeShyZ2wpDQpyZ2xwbG90KGcsIHZlcnRleC5sYWJlbD1OQSkgIyBub3Qgd29ya2luZyBpbiB3aW5kb3dzDQpgYGANCldoYXQgcGFyYW1ldGVyIHRvIHRoZSBwbG90KCkgZnVuY3Rpb24gd291bGQgd2UgdXNlIHRvIGNoYW5nZSB0aGUgZWRnZSB3aWR0aCB3aGVuIHBsb3R0aW5nIGc/DQpgYGB7cn0NCnBsb3QoZywgZWRnZS53aWR0aD0yLCB2ZXJ0ZXgubGFiZWw9TkEpDQpwcmludCgiZWRnZS53aWR0aCIpDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=