# Exercise 1
A <- matrix(1:50, 5) ; for (i in 1:5) for (j in 1:10) A[i,j] <- i**j ; A # shows A constructed as requested
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 1 1 1 1 1 1 1 1 1
## [2,] 2 4 8 16 32 64 128 256 512 1024
## [3,] 3 9 27 81 243 729 2187 6561 19683 59049
## [4,] 4 16 64 256 1024 4096 16384 65536 262144 1048576
## [5,] 5 25 125 625 3125 15625 78125 390625 1953125 9765625
# alternative, better way
A <- matrix(rep(1:5, each=10), 5, byrow=T) ; B <- matrix(rep(1:10, each=5), 5) ;
A <- A**B ; A # operations are cellwise in R
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 1 1 1 1 1 1 1 1 1
## [2,] 2 4 8 16 32 64 128 256 512 1024
## [3,] 3 9 27 81 243 729 2187 6561 19683 59049
## [4,] 4 16 64 256 1024 4096 16384 65536 262144 1048576
## [5,] 5 25 125 625 3125 15625 78125 390625 1953125 9765625
# Exercise 2
# constructs and shows A on screen
A <- matrix(rep(1, 100), 10) ; for (i in 1:10) for (j in 1:10) A[i,j] <- abs(i-j) ; A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 0 1 2 3 4 5 6 7 8 9
## [2,] 1 0 1 2 3 4 5 6 7 8
## [3,] 2 1 0 1 2 3 4 5 6 7
## [4,] 3 2 1 0 1 2 3 4 5 6
## [5,] 4 3 2 1 0 1 2 3 4 5
## [6,] 5 4 3 2 1 0 1 2 3 4
## [7,] 6 5 4 3 2 1 0 1 2 3
## [8,] 7 6 5 4 3 2 1 0 1 2
## [9,] 8 7 6 5 4 3 2 1 0 1
## [10,] 9 8 7 6 5 4 3 2 1 0
# alternative, better way
A <- matrix(rep(1:10, each=10), 10, byrow=T) ; B <- matrix(rep(1:10, times=10), 10, byrow=T) ;
A <- abs(A-B) ; A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 0 1 2 3 4 5 6 7 8 9
## [2,] 1 0 1 2 3 4 5 6 7 8
## [3,] 2 1 0 1 2 3 4 5 6 7
## [4,] 3 2 1 0 1 2 3 4 5 6
## [5,] 4 3 2 1 0 1 2 3 4 5
## [6,] 5 4 3 2 1 0 1 2 3 4
## [7,] 6 5 4 3 2 1 0 1 2 3
## [8,] 7 6 5 4 3 2 1 0 1 2
## [9,] 8 7 6 5 4 3 2 1 0 1
## [10,] 9 8 7 6 5 4 3 2 1 0
Diagonal <- c() # initialization
for(i in 1:10){
Diagonal <- c(Diagonal, A[i,i])
}
A <- matrix(0, 10, 10) ; for (i in 1:10) A[i,i] <- Diagonal[i] ; A # returns the diagonal matrix of A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 0 0 0 0 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0 0 0 0 0
## [9,] 0 0 0 0 0 0 0 0 0 0
## [10,] 0 0 0 0 0 0 0 0 0 0
# an alternative way to get the diagonal matrix of A using diag() function
A <- matrix(0, 10, 10) ; for (i in 1:10) A[i,i] <- diag(A)[i] ; A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 0 0 0 0 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0 0 0 0 0
## [9,] 0 0 0 0 0 0 0 0 0 0
## [10,] 0 0 0 0 0 0 0 0 0 0
# Exercise 3
A <- matrix(1:100, 10, 10, byrow = T) ; A # displays the matrix requested
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 11 12 13 14 15 16 17 18 19 20
## [3,] 21 22 23 24 25 26 27 28 29 30
## [4,] 31 32 33 34 35 36 37 38 39 40
## [5,] 41 42 43 44 45 46 47 48 49 50
## [6,] 51 52 53 54 55 56 57 58 59 60
## [7,] 61 62 63 64 65 66 67 68 69 70
## [8,] 71 72 73 74 75 76 77 78 79 80
## [9,] 81 82 83 84 85 86 87 88 89 90
## [10,] 91 92 93 94 95 96 97 98 99 100
# Exercise 4
A <- matrix(1:100, 10, 10, byrow = T) ; B <- A*2 ; B # shows B
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 2 4 6 8 10 12 14 16 18 20
## [2,] 22 24 26 28 30 32 34 36 38 40
## [3,] 42 44 46 48 50 52 54 56 58 60
## [4,] 62 64 66 68 70 72 74 76 78 80
## [5,] 82 84 86 88 90 92 94 96 98 100
## [6,] 102 104 106 108 110 112 114 116 118 120
## [7,] 122 124 126 128 130 132 134 136 138 140
## [8,] 142 144 146 148 150 152 154 156 158 160
## [9,] 162 164 166 168 170 172 174 176 178 180
## [10,] 182 184 186 188 190 192 194 196 198 200
C <- matrix(1:100, ncol=10); for (i in 1:10) for (j in 1:10) C[i,j] <- i*j*A[i,j] ; C # shows C
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 4 9 16 25 36 49 64 81 100
## [2,] 22 48 78 112 150 192 238 288 342 400
## [3,] 63 132 207 288 375 468 567 672 783 900
## [4,] 124 256 396 544 700 864 1036 1216 1404 1600
## [5,] 205 420 645 880 1125 1380 1645 1920 2205 2500
## [6,] 306 624 954 1296 1650 2016 2394 2784 3186 3600
## [7,] 427 868 1323 1792 2275 2772 3283 3808 4347 4900
## [8,] 568 1152 1752 2368 3000 3648 4312 4992 5688 6400
## [9,] 729 1476 2241 3024 3825 4644 5481 6336 7209 8100
## [10,] 910 1840 2790 3760 4750 5760 6790 7840 8910 10000
# alternative, better way
C <- matrix(rep(1:10, times=10), 10) ; D <- matrix(rep(1:10, each=10), 10) ;
C <- C*D*A ; C
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 4 9 16 25 36 49 64 81 100
## [2,] 22 48 78 112 150 192 238 288 342 400
## [3,] 63 132 207 288 375 468 567 672 783 900
## [4,] 124 256 396 544 700 864 1036 1216 1404 1600
## [5,] 205 420 645 880 1125 1380 1645 1920 2205 2500
## [6,] 306 624 954 1296 1650 2016 2394 2784 3186 3600
## [7,] 427 868 1323 1792 2275 2772 3283 3808 4347 4900
## [8,] 568 1152 1752 2368 3000 3648 4312 4992 5688 6400
## [9,] 729 1476 2241 3024 3825 4644 5481 6336 7209 8100
## [10,] 910 1840 2790 3760 4750 5760 6790 7840 8910 10000
# Exercise 5
l1 <- lapply(1:10, function(x){1:10}) ; l1 # returns the list
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[2]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[3]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[4]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[5]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[6]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[7]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[8]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[9]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[10]]
## [1] 1 2 3 4 5 6 7 8 9 10
# Exercise 6
l1 <- lapply(1:10, function(x){1:10}) ; A <- matrix(unlist(l1), 10, 10, byrow=T) ; A # displays A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 1 2 3 4 5 6 7 8 9 10
## [3,] 1 2 3 4 5 6 7 8 9 10
## [4,] 1 2 3 4 5 6 7 8 9 10
## [5,] 1 2 3 4 5 6 7 8 9 10
## [6,] 1 2 3 4 5 6 7 8 9 10
## [7,] 1 2 3 4 5 6 7 8 9 10
## [8,] 1 2 3 4 5 6 7 8 9 10
## [9,] 1 2 3 4 5 6 7 8 9 10
## [10,] 1 2 3 4 5 6 7 8 9 10
# Exercise 7
l2 <- lapply(1:10, function(y){1:10}) ; A <- matrix(unlist(l2), 10, 10) ; A # shows A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 1 1 1 1 1 1 1 1 1
## [2,] 2 2 2 2 2 2 2 2 2 2
## [3,] 3 3 3 3 3 3 3 3 3 3
## [4,] 4 4 4 4 4 4 4 4 4 4
## [5,] 5 5 5 5 5 5 5 5 5 5
## [6,] 6 6 6 6 6 6 6 6 6 6
## [7,] 7 7 7 7 7 7 7 7 7 7
## [8,] 8 8 8 8 8 8 8 8 8 8
## [9,] 9 9 9 9 9 9 9 9 9 9
## [10,] 10 10 10 10 10 10 10 10 10 10