R Matrices
R Matrices
Multiplication by a scalar
> c = matrix(c(1, 2, 3, 0, 4, 5), 2, 2, byrow = T )
>c
[, 1] [, 2] [, 3]
[1, ] 1
2
3
[2, ] 0
4
5
>d=2c
[, 1] [, 2] [, 3]
4
6
> d [1, ] 2
[2, ] 0
8
10
Transpose of a matrix
> t(c)
[, 1]
[1, ] 1
[2, ] 2
[3, ] 3
[, 2]
0
4
5
Matrix multiplication
> a = matrix(c(3, 0, 2, 1, 1, 4), 2, 3, byrow = T )
>a
[, 1] [, 2] [, 3]
[1, ] 3
0
2
[2, ] 1
1
4
> b = matrix(c(1, 1, 1, 2, 1, 3), 3, 2, byrow = T )
>b
[, 1] [, 2]
[1, ] 1
1
[2, ] 1
2
[3, ] 1
3
> c = a% %b
>c
[, 1] [, 2]
[1, ] 1
3
[2, ] 4
11
Inner product
> x = c(1, 7, 6, 4)
> y = c(2, 2, 1, 5)
>x
[1] 1 7 6 4
>y
[1] 2 2 1 5
> t(x)% %y
[, 1]
[1, ] 2
> sum(x y)
[1] 2
> crossprod(x, y)
[, 1]
[1, ] 2
Length of a vector
> ynorm = sqrt(crossprod(y, y))
> ynorm
[, 1]
[1, ] 5.830952
Elementwise multiplication
> a = matrix(c(3, 6, 2, 1), 2, 2, byrow = T )
>a
[, 1] [, 2]
[1, ] 3
6
[2, ] 2
1
> b = matrix(c(7, 4, 3, 2), 2, 2, byrow = T )
>b
[, 1] [, 2]
[1, ] 7
4
[2, ] 3
2
>ab
[, 1] [, 2]
[1, ] 21 24
[2, ] 6
2
Kronecker product
> a = matrix(c(2, 4, 0, 2, 3, 1), 3, 2, byrow = T )
>a
[, 1] [, 2]
[1, ] 2
4
[2, ] 0
2
[3, ] 3
1
> b = matrix(c(5, 3, 2, 1), 2, 2, byrow = T )
>b
[, 1] [, 2]
[1, ] 5
3
[2, ] 2
1
> kronecker(a, b)
[, 1] [, 2] [, 3] [, 4]
[1, ] 10
6
20
12
[2, ] 4
2
8
4
[3, ] 0
0 10 6
[4, ] 0
0
4 2
[5, ] 15
9
5 3
[6, ] 6
3
2 1
Trace of a matrix
> a = matrix(c(1, 3, 7, 2, 4, 8, 5, 6, 9), 3, 3, byrow = T )
>a
[, 1] [, 2] [, 3]
[1, ]
1
3
7
[2, ] 2
4
8
[3, ]
5
6
9
> tra = sum(diag(a))
> tra
[1]14
Inverse of a matrix
> ainv = solve(a)
> ainv
[r] [, 1] [, 2] [, 3]
[1, ]
6
7.5 2
[2, ] 11 13.0 3
[3, ]
4
4.5 1
> a% %ainv
[r]
[, 1]
[, 2]
[1, ] 1.000000e + 00
0
[2, ] 7.105427e 15
1
[3, ] 0.000000e + 00
0
[, 3]
1.776357e 15
1.776357e 15
1.000000e + 00
Rank of a matrix
> A = matrix(c(1, 1, 1, 2, 5, 1, 0, 1, 1), 3, 3, byrow = T )
>A
[, 1] [, 2] [, 3]
[1, ]
1
1
1
[2, ]
2
5
1
[3, ]
0
1
1
> qr(A)$rank
[1] 2
rank(A0 A) = rank(A)
> AtA = t(A)% %A
> AtA
[, 1] [, 2] [, 3]
[1, ]
5
11 1
[2, ] 11 27 5
[3, ] 1 5
3
> qr(AtA)$rank
[1] 2
> solve(AtA)
Error in solve.default(AtA) :
system is computationally singular: reciprocal condition number =
2.58191e-18
Row/column operations:
> sum(A)
[1] 9
> apply(A, 1, sum)
[1] 3 6 0
> apply(A, 2, sum)
[1] 3 7 1
> apply(A, 1, prod)
[1] 1 10 0
> apply(A, 1, mean)
[1] 1 2 0
> apply(A, 1, var)
[1] 0 9 1
[, 2]
0.8944272
0.4472136
[, 2]
[, 3]
7.071068e 01 0.4082483
7.071068e 01 0.4082483
1.110223e 16 0.8164966
$v
[1, ]
[2, ]
[3, ]
[4, ]
[, 1]
0.5
0.5
0.5
0.5
[, 2]
[, 3]
7.071068e 01 0.3535534
7.071068e 01 0.3535534
1.110223e 16
0.8535534
1.110223e 16 0.1464466
[, 4]
1
1
1
0.000000e + 00
[, 3]
0.4082483
0.8164966
0.4082483
> SV DA = svd(A)
> SV DA
$d
[1] 11 4 1
$u
[, 1]
[, 2]
[1, ] 0.2672612 0.8728716
[2, ] 0.5345225 0.2182179
[3, ] 0.8017837 0.4364358
$v
[, 1]
[, 2]
[1, ] 0.2672612 0.8728716
[2, ] 0.5345225 0.2182179
[3, ] 0.8017837 0.4364358
[, 3]
0.4082483
0.8164966
0.4082483
[, 3]
0.4082483
0.8164966
0.4082483
> SV DW = svd(W )
> SV DW
$d
[1] 10.017128 8.151345 2.865783
$u
[, 1]
[, 2]
[, 3]
[1, ] 0.0352886 0.4665008 0.88381658
[2, ] 0.2379907 0.8550024 0.46079428
[3, ] 0.9706262 0.2266009
0.08085101
$v
[, 1]
[, 2]
[, 3]
[1, ] 0.0352886 0.4665008 0.88381658
[2, ] 0.2379907 0.8550024 0.46079428
[3, ] 0.9706262 0.2266009
0.08085101