ruk·si

📊 R
Matrices

Updated at 2017-10-13 17:54

Matrices are two dimensional vectors.

# fill with 0, 3 rows high, 4 columns wide.
matrix(0, nrow=3, ncol=4)
#      [,1] [,2] [,3] [,4]
# [1,]    0    0    0    0
# [2,]    0    0    0    0
# [3,]    0    0    0    0

You can use vector to fill in a matrix. By default, matrix is filled from top to bottom and left to right.

a <- 1:12
matrix(a, 3, 4)
#      [,1] [,2] [,3] [,4]
# [1,]    1    4    7   10
# [2,]    2    5    8   11
# [3,]    3    6    9   12

Pass in fourth argument to fill from left to right and top to bottom.

a <- 1:12
matrix(a, 3, 4, byrow=TRUE)
#      [,1] [,2] [,3] [,4]
# [1,]    1    2    3   4
# [2,]    5    6    7   8
# [3,]    9    10   11  12

Dimension function dim can be used to transform vector into a matrix. Note that dim also returns current dimensions.

plank <- 1:8
dim(plank) <- c(2, 4)
print(plank)
#      [,1] [,2] [,3] [,4]
# [1,]    1    3    5    7
# [2,]    2    4    6    8

Matrix access.

#      [,1] [,2] [,3] [,4]
# [1,]    1    3    5    7
# [2,]    2    4    6    8

# Single element.
plank[2, 3]
# [1] 6

# Assignment to a single element.
plank[1, 4] <- 0

# Get one row.
plank[2,]
# [1] 2 4 6 8

# Get one column.
plank[, 4]
# [1] 7 8

# Get sub matrix from columns 2, 3 and 4.
plank[, 2:4]
#      [,1] [,2] [,3]
# [1,]    3    5    7
# [2,]    4    6    8

Plotting matrices.

# Each point is 1 meter above sea level on a beach.
elevation <- matrix(1, 10, 10)

# We dug a hole in the beach.
elevation[4, 6] <- 0

# Generating a contour map.
contour(elevation)

# Generating a 3D perspective plot.
persp(elevation)

# Same plot but do not expand to full height.
persp(elevation, expand = 0.2

# R has some sample data you can use.
# volcano is 3D map of a dormant New Zealand volcano.
# 87x61 matrix with elevation values.
contour(volcano)
persp(volcano, expand=0.2)

# Generating a heap map
image(volcano)

Sources

  • Google Developers R Programming Videos
  • Try R