Nothing
pause <- function() {}
### R objects, (real) numbers
a <- 3
a
b <- 4
b
a + b
pause()
### Case sensitive
A <- 16
a
A
pause()
### Vector objects
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
a
b <- 1:100
b
a[1]
b[1:5]
a[1] <- 10
a
a[1:4] <- 2
a
pause()
### Vector arithmetic
a * 2 + 1
pause()
### Functions
ls()
length(a)
mean(a)
sd(a)
sd
c
pause()
### Getting help
# ?sd
# ??"standard deviation"
# RSiteSearch("network betweenness")
pause()
### Classes
class(2)
class(1:10)
class(sd)
pause()
### Character vectors
char.vec <- c("this", "is", "a", "vector", "of", "characters")
char_vec <- char.vec
char.vec[1]
pause()
### Index vectors
age <- c(45, 36, 65, 21, 52, 19)
age[1]
age[1:5]
age[c(2, 5, 6)]
b[seq(1, 100, by = 2)]
pause()
### Named vectors
names(age) <- c("Alice", "Bob", "Cecil", "David", "Eve", "Fiona")
age
age["Bob"]
age[c("Eve", "David", "David")]
pause()
### Indexing with logical vectors
age[c(FALSE, TRUE, FALSE, TRUE, FALSE, TRUE)]
names(age)[age > 40]
age > 40
pause()
### Matrices
M <- matrix(1:20, 10, 2)
M
M2 <- matrix(1:20, 10, 2, byrow = TRUE) ## Named argument!
M2
M[1, 1]
M[1, ]
M[, 1]
M[1:5, 2]
pause()
### Generic functions
sd(a)
sd(M)
class(a)
class(M)
pause()
### Lists
l <- list(1:10, "Hello!", diag(5))
l
l[[1]]
l[2:3]
l
l2 <- list(A = 1:10, H = "Hello!", M = diag(5))
l2
l2$A
l2$M
pause()
### Factors
countries <- c(
"SUI", "USA", "GBR", "GER", "SUI",
"SUI", "GBR", "GER", "FRA", "GER"
)
countries
fcountries <- factor(countries)
fcountries
levels(fcountries)
pause()
### Data frames
survey <- data.frame(
row.names = c("Alice", "Bob", "Cecil", "David", "Eve"),
Sex = c("F", "M", "F", "F", "F"),
Age = c(45, 36, 65, 21, 52),
Country = c("SUI", "USA", "SUI", "GBR", "USA"),
Married = c(TRUE, FALSE, FALSE, TRUE, TRUE),
Salary = c(70, 65, 200, 45, 100)
)
survey
survey$Sex
plot(survey$Age, survey$Salary)
AS.model <- lm(Salary ~ Age, data = survey)
AS.model
summary(AS.model)
abline(AS.model)
tapply(survey$Salary, survey$Country, mean)
pause()
### Packages
# install.packages("igraph")
# library(help="igraph")
library(igraph)
sessionInfo()
pause()
### Graphs
## Create a small graph, A->B, A->C, B->C, C->E, D
## A=1, B=2, C=3, D=4, E=5
g <- make_graph(c(1, 2, 1, 3, 2, 3, 3, 5), n = 5)
pause()
### Print a graph to the screen
g
pause()
### Create an undirected graph as well
## A--B, A--C, B--C, C--E, D
g2 <- make_graph(c(1, 2, 1, 3, 2, 3, 3, 5), n = 5, dir = FALSE)
g2
pause()
### Is this object an igraph graph?
is_igraph(g)
is_igraph(1:10)
pause()
### Summary, number of vertices, edges
summary(g)
vcount(g)
ecount(g)
pause()
### Is the graph directed?
is_directed(g)
is_directed(g2)
pause()
### Convert from directed to undirected
as.undirected(g)
pause()
### And back
as.directed(as.undirected(g))
pause()
### Multiple edges
g <- make_graph(c(1, 2, 1, 2, 1, 3, 2, 3, 4, 5), n = 5)
g
is_simple(g)
which_multiple(g)
pause()
### Remove multiple edges
g <- simplify(g)
is_simple(g)
pause()
### Loop edges
g <- make_graph(c(1, 1, 1, 2, 1, 3, 2, 3, 4, 5), n = 5)
g
is_simple(g)
which_loop(g)
pause()
### Remove loop edges
g <- simplify(g)
is_simple(g)
pause()
### Naming vertices
g <- make_ring(10)
V(g)$name <- letters[1:10]
V(g)$name
g
print(g, v = T)
pause()
### Create undirected example graph
g2 <- graph_from_literal(
Alice - Bob:Cecil:Daniel,
Cecil:Daniel - Eugene:Gordon
)
print(g2, v = T)
pause()
### Remove Alice
g3 <- delete_vertices(g2, match("Alice", V(g2)$name))
pause()
### Add three new vertices
g4 <- add_vertices(g3, 3)
print(g4, v = T)
igraph_options(
print.vertex.attributes = TRUE,
plot.layout = layout_with_fr
)
g4
plot(g4)
pause()
### Add three new vertices, with names this time
g4 <- add_vertices(g3, 3, attr = list(name = c("Helen", "Ike", "Jane")))
g4
pause()
### Add some edges as well
g4 <- add_edges(g4, match(c("Helen", "Jane", "Ike", "Jane"), V(g4)$name))
g4
pause()
### Edge sequences, first create a directed example graph
g2 <- graph_from_literal(
Alice -+ Bob:Cecil:Daniel,
Cecil:Daniel +-+ Eugene:Gordon
)
print(g2, v = T)
plot(g2, layout = layout_with_kk, vertex.label = V(g2)$name)
pause()
### Sequence of all edges
E(g2)
pause()
### Edge from a vertex to another
E(g2, P = c(1, 2))
pause()
### Delete this edge
g3 <- delete_edges(g2, E(g2, P = c(1, 2)))
g3
pause()
### Get the id of the edge
as.vector(E(g2, P = c(1, 2)))
pause()
### All adjacent edges of a vertex
E(g2)[adj(3)]
pause()
### Or multiple vertices
E(g2)[adj(c(3, 1))]
pause()
### Outgoing edges
E(g2)[from(3)]
pause()
### Incoming edges
E(g2)[to(3)]
pause()
### Edges along a path
E(g2, path = c(1, 4, 5))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.