Author: Team BioSakshat
Last update: June 2017
Copyright © 2017 BioSakshat, Inc. All rights reserved.
x=21:70;
dim(x)=c(10,5); # 10 row, 5 col
x;
## [,1] [,2] [,3] [,4] [,5]
## [1,] 21 31 41 51 61
## [2,] 22 32 42 52 62
## [3,] 23 33 43 53 63
## [4,] 24 34 44 54 64
## [5,] 25 35 45 55 65
## [6,] 26 36 46 56 66
## [7,] 27 37 47 57 67
## [8,] 28 38 48 58 68
## [9,] 29 39 49 59 69
## [10,] 30 40 50 60 70
x=21:70;
matrix(x, ncol=10); # 10 col
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 21 26 31 36 41 46 51 56 61 66
## [2,] 22 27 32 37 42 47 52 57 62 67
## [3,] 23 28 33 38 43 48 53 58 63 68
## [4,] 24 29 34 39 44 49 54 59 64 69
## [5,] 25 30 35 40 45 50 55 60 65 70
m=matrix(x, ncol=10, byrow = TRUE); # Fill elements row wise
# Data structure of m
str(m);
## int [1:5, 1:10] 21 31 41 51 61 22 32 42 52 62 ...
# Dimension of m
dim(m);
## [1] 5 10
# Number of rows
nrow(m);
## [1] 5
# Number of columns
ncol(m);
## [1] 10
# Column means
colMeans(m);
## [1] 41 42 43 44 45 46 47 48 49 50
# Row means
rowMeans(m);
## [1] 25.5 35.5 45.5 55.5 65.5
# Transpose
t(m);
## [,1] [,2] [,3] [,4] [,5]
## [1,] 21 31 41 51 61
## [2,] 22 32 42 52 62
## [3,] 23 33 43 53 63
## [4,] 24 34 44 54 64
## [5,] 25 35 45 55 65
## [6,] 26 36 46 56 66
## [7,] 27 37 47 57 67
## [8,] 28 38 48 58 68
## [9,] 29 39 49 59 69
## [10,] 30 40 50 60 70
# Fetch column names
colnames(m);
## NULL
# Fetch row names
rownames(m);
## NULL
# head
head(m);
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 21 22 23 24 25 26 27 28 29 30
## [2,] 31 32 33 34 35 36 37 38 39 40
## [3,] 41 42 43 44 45 46 47 48 49 50
## [4,] 51 52 53 54 55 56 57 58 59 60
## [5,] 61 62 63 64 65 66 67 68 69 70
colnames(m)=paste("C",1:ncol(m),sep="");
rownames(m)=paste("R",1:nrow(m),sep="");
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R1 21 22 23 24 25 26 27 28 29 30
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R1 21 22 23 24 25 26 27 28 29 30
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
# 1st row, 3rd column
m[1,3];
## [1] 23
# 1st tp 3rd row and 3rd to 5th column
m[c(1:3),c(3:5)];
## C3 C4 C5
## R1 23 24 25
## R2 33 34 35
## R3 43 44 45
# 1st row
m[1,];
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## 21 22 23 24 25 26 27 28 29 30
# 3rd column
m[,3];
## R1 R2 R3 R4 R5
## 23 33 43 53 63
# 3rd element. Here matrix is converted to vector and 3rd element is returned
m[3];
## [1] 41
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R1 21 22 23 24 25 26 27 28 29 30
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
index=c(2,3,3,4,4,5);
m[index]
## [1] 31 41 41 51 51 61
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R1 21 22 23 24 25 26 27 28 29 30
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
m["R1","C3"];
## [1] 23
m1=matrix(1:10, nrow=5);
m1;
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
m1=rbind(m1, 999);
m1;
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
## [6,] 999 999
m1=rbind(m1, c(2,3));
m1;
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
## [6,] 999 999
## [7,] 2 3
m1=cbind(m1, 1:5);
## Warning in cbind(m1, 1:5): number of rows of result is not a multiple of
## vector length (arg 2)
m1;
## [,1] [,2] [,3]
## [1,] 1 6 1
## [2,] 2 7 2
## [3,] 3 8 3
## [4,] 4 9 4
## [5,] 5 10 5
## [6,] 999 999 1
## [7,] 2 3 2
m1=cbind(m1, 10:20);
## Warning in cbind(m1, 10:20): number of rows of result is not a multiple of
## vector length (arg 2)
m1;
## [,1] [,2] [,3] [,4]
## [1,] 1 6 1 10
## [2,] 2 7 2 11
## [3,] 3 8 3 12
## [4,] 4 9 4 13
## [5,] 5 10 5 14
## [6,] 999 999 1 15
## [7,] 2 3 2 16
x=seq(2, 4, length=10);
y=1:10;
x;
## [1] 2.000000 2.222222 2.444444 2.666667 2.888889 3.111111 3.333333
## [8] 3.555556 3.777778 4.000000
y;
## [1] 1 2 3 4 5 6 7 8 9 10
cbind(x,y);
## x y
## [1,] 2.000000 1
## [2,] 2.222222 2
## [3,] 2.444444 3
## [4,] 2.666667 4
## [5,] 2.888889 5
## [6,] 3.111111 6
## [7,] 3.333333 7
## [8,] 3.555556 8
## [9,] 3.777778 9
## [10,] 4.000000 10
rbind(x,y);
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## x 2 2.222222 2.444444 2.666667 2.888889 3.111111 3.333333 3.555556
## y 1 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000
## [,9] [,10]
## x 3.777778 4
## y 9.000000 10
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R1 21 22 23 24 25 26 27 28 29 30
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
m=m[-1,];
m;
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
## R2 31 32 33 34 35 36 37 38 39 40
## R3 41 42 43 44 45 46 47 48 49 50
## R4 51 52 53 54 55 56 57 58 59 60
## R5 61 62 63 64 65 66 67 68 69 70
m=m[,-3];
m;
## C1 C2 C4 C5 C6 C7 C8 C9 C10
## R2 31 32 34 35 36 37 38 39 40
## R3 41 42 44 45 46 47 48 49 50
## R4 51 52 54 55 56 57 58 59 60
## R5 61 62 64 65 66 67 68 69 70
is.matrix(m);
## [1] TRUE
m;
## C1 C2 C4 C5 C6 C7 C8 C9 C10
## R2 31 32 34 35 36 37 38 39 40
## R3 41 42 44 45 46 47 48 49 50
## R4 51 52 54 55 56 57 58 59 60
## R5 61 62 64 65 66 67 68 69 70
m%%5==0;
## C1 C2 C4 C5 C6 C7 C8 C9 C10
## R2 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
## R3 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
## R4 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
## R5 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
which(m%%5==0, arr.ind = TRUE);
## row col
## R2 1 4
## R3 2 4
## R4 3 4
## R5 4 4
## R2 1 9
## R3 2 9
## R4 3 9
## R5 4 9
Task: Now Go to Task page and finish Matrix