Question 1
n_dims <- sample(3:10,1)
print(n_dims)
## [1] 8
v <- 1:(n_dims^2)
print(v)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
## [51] 51 52 53 54 55 56 57 58 59 60 61 62 63 64
vShuffle <-sample(v)
print(vShuffle)
##  [1] 18 33 22 34 21 36 14 51 17  3  6 35 54 52 24 42 59 44 58 10 61 32 64  8 28
## [26] 26 20  2 41 16 13 46 43 57  1 23 63 53 37  4 31 12  9 55 50 49 56 19 15 40
## [51] 47 62 29 30 27  5  7 45 11 60 39 25 48 38
m <- matrix(data=vShuffle,nrow=n_dims)
print(m)
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]   18   17   59   28   43   31   15    7
## [2,]   33    3   44   26   57   12   40   45
## [3,]   22    6   58   20    1    9   47   11
## [4,]   34   35   10    2   23   55   62   60
## [5,]   21   54   61   41   63   50   29   39
## [6,]   36   52   32   16   53   49   30   25
## [7,]   14   24   64   13   37   56   27   48
## [8,]   51   42    8   46    4   19    5   38
mTrans <- t(m)
print(mTrans)
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]   18   33   22   34   21   36   14   51
## [2,]   17    3    6   35   54   52   24   42
## [3,]   59   44   58   10   61   32   64    8
## [4,]   28   26   20    2   41   16   13   46
## [5,]   43   57    1   23   63   53   37    4
## [6,]   31   12    9   55   50   49   56   19
## [7,]   15   40   47   62   29   30   27    5
## [8,]    7   45   11   60   39   25   48   38
sum(mTrans[1,])
## [1] 229
mean(mTrans[1,])
## [1] 28.625
sum(mTrans[n_dims,])
## [1] 273
mean(mTrans[n_dims,])
## [1] 34.125
EmTrans <- eigen(mTrans)
print(EmTrans)
## eigen() decomposition
## $values
## [1] 257.01325+ 0.00000i  50.15916+ 0.00000i -37.31269+21.19640i
## [4] -37.31269-21.19640i  19.82315+22.96087i  19.82315-22.96087i
## [7]  -7.09667+24.32990i  -7.09667-24.32990i
## 
## $vectors
##               [,1]            [,2]                  [,3]                  [,4]
## [1,] -0.3078650+0i  0.002871269+0i -0.2772793-0.1546606i -0.2772793+0.1546606i
## [2,] -0.3130162+0i -0.230200759+0i  0.1550769-0.4127303i  0.1550769+0.4127303i
## [3,] -0.4708084+0i  0.756887015+0i  0.3312488+0.1525136i  0.3312488-0.1525136i
## [4,] -0.2662495+0i -0.111609828+0i  0.1441682-0.1855465i  0.1441682+0.1855465i
## [5,] -0.3677695+0i -0.395560380+0i -0.0264942+0.2860473i -0.0264942-0.2860473i
## [6,] -0.3681815+0i  0.083866642+0i  0.3049233+0.0796511i  0.3049233-0.0796511i
## [7,] -0.3445615+0i  0.429868514+0i -0.5407839+0.0000000i -0.5407839+0.0000000i
## [8,] -0.3537738+0i -0.115655056+0i -0.0302217+0.2034573i -0.0302217-0.2034573i
##                         [,5]                    [,6]                    [,7]
## [1,]  0.47939073-0.33589983i  0.47939073+0.33589983i -0.49775629+0.00000000i
## [2,] -0.06063641+0.01714536i -0.06063641-0.01714536i -0.01756536-0.26395740i
## [3,] -0.09574704+0.20414870i -0.09574704-0.20414870i  0.08015431+0.03435458i
## [4,]  0.15443736-0.02221509i  0.15443736+0.02221509i -0.28486333+0.28706098i
## [5,] -0.59461750+0.00000000i -0.59461750+0.00000000i -0.17862656+0.22495750i
## [6,]  0.01777036-0.14916539i  0.01777036+0.14916539i  0.40902554-0.25478815i
## [7,]  0.07256078+0.19851208i  0.07256078-0.19851208i  0.37491416+0.07075903i
## [8,]  0.35832362+0.17027185i  0.35832362-0.17027185i  0.09355056-0.20505890i
##                         [,8]
## [1,] -0.49775629+0.00000000i
## [2,] -0.01756536+0.26395740i
## [3,]  0.08015431-0.03435458i
## [4,] -0.28486333-0.28706098i
## [5,] -0.17862656-0.22495750i
## [6,]  0.40902554+0.25478815i
## [7,]  0.37491416-0.07075903i
## [8,]  0.09355056+0.20505890i
# $values are the values that each term is multiplied by to get the eigenvectors
# $vectors are the actual vectors created by multiplying the $values and the terms in the matrix
typeof(EmTrans[["$values"]])
## [1] "NULL"
typeof(EmTrans[["$vectors"]])
## [1] "NULL"


Question 2
my_matrix <- matrix(data=runif(16),nrow=4)
print(my_matrix)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 0.8853624 0.6849987 0.1230459 0.7746027
## [2,] 0.7694606 0.9497774 0.8874044 0.3916229
## [3,] 0.9792345 0.9660570 0.3032803 0.2357949
## [4,] 0.2294372 0.3857119 0.9395571 0.2675108
mylogical <- runif(1:100)
my_logical <- mylogical < 0.5
print (my_logical)
##   [1]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
##  [13]  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
##  [25]  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
##  [37] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
##  [49]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
##  [61] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
##  [73]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
##  [85]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
##  [97]  TRUE FALSE FALSE FALSE
myletters <- letters[1:26]
my_letters <- sample(myletters)
print(my_letters)
##  [1] "c" "t" "q" "x" "z" "u" "v" "k" "a" "h" "m" "f" "w" "i" "s" "o" "e" "b" "y"
## [20] "n" "g" "l" "d" "p" "j" "r"
MyList <- list(my_matrix[2,2],my_logical[2],my_letters[2])
print(MyList)
## [[1]]
## [1] 0.9497774
## 
## [[2]]
## [1] TRUE
## 
## [[3]]
## [1] "t"
typeof(MyList[[1]])
## [1] "double"
typeof(MyList[[2]])
## [1] "logical"
typeof(MyList[[3]])
## [1] "character"
NewAtomicVector <- c(MyList[[1]],MyList[[2]],MyList[[3]])
print(NewAtomicVector)
## [1] "0.949777432950214" "TRUE"              "t"
typeof(NewAtomicVector)
## [1] "character"


Question 3
my_unis <- sample(0:10,26,replace=TRUE)
print(my_unis)
##  [1]  1 10 10 10  7  9  3  4  1  2  7  6  0  5  0  4 10  7  5  7  0  4  5  9  1
## [26]  4
myletters <- letters[1:26]
my_letters <- sample(myletters)
print(my_letters)
##  [1] "w" "b" "n" "h" "t" "i" "m" "p" "f" "q" "g" "x" "s" "d" "c" "r" "v" "u" "z"
## [20] "e" "y" "j" "o" "k" "a" "l"
MyDF <- data.frame(my_unis,my_letters)
print(MyDF)
##    my_unis my_letters
## 1        1          w
## 2       10          b
## 3       10          n
## 4       10          h
## 5        7          t
## 6        9          i
## 7        3          m
## 8        4          p
## 9        1          f
## 10       2          q
## 11       7          g
## 12       6          x
## 13       0          s
## 14       5          d
## 15       0          c
## 16       4          r
## 17      10          v
## 18       7          u
## 19       5          z
## 20       7          e
## 21       0          y
## 22       4          j
## 23       5          o
## 24       9          k
## 25       1          a
## 26       4          l
MyDF[sample(0:26,4),] <- NA
print(MyDF)
##    my_unis my_letters
## 1        1          w
## 2       10          b
## 3       10          n
## 4       10          h
## 5       NA       <NA>
## 6        9          i
## 7       NA       <NA>
## 8        4          p
## 9        1          f
## 10       2          q
## 11       7          g
## 12       6          x
## 13       0          s
## 14       5          d
## 15       0          c
## 16       4          r
## 17      10          v
## 18       7          u
## 19       5          z
## 20      NA       <NA>
## 21       0          y
## 22       4          j
## 23      NA       <NA>
## 24       9          k
## 25       1          a
## 26       4          l
is.na(MyDF)
##       my_unis my_letters
##  [1,]   FALSE      FALSE
##  [2,]   FALSE      FALSE
##  [3,]   FALSE      FALSE
##  [4,]   FALSE      FALSE
##  [5,]    TRUE       TRUE
##  [6,]   FALSE      FALSE
##  [7,]    TRUE       TRUE
##  [8,]   FALSE      FALSE
##  [9,]   FALSE      FALSE
## [10,]   FALSE      FALSE
## [11,]   FALSE      FALSE
## [12,]   FALSE      FALSE
## [13,]   FALSE      FALSE
## [14,]   FALSE      FALSE
## [15,]   FALSE      FALSE
## [16,]   FALSE      FALSE
## [17,]   FALSE      FALSE
## [18,]   FALSE      FALSE
## [19,]   FALSE      FALSE
## [20,]    TRUE       TRUE
## [21,]   FALSE      FALSE
## [22,]   FALSE      FALSE
## [23,]    TRUE       TRUE
## [24,]   FALSE      FALSE
## [25,]   FALSE      FALSE
## [26,]   FALSE      FALSE
MyDF2 <- MyDF[order(MyDF$my_letters),]
print(MyDF2)
##    my_unis my_letters
## 25       1          a
## 2       10          b
## 15       0          c
## 14       5          d
## 9        1          f
## 11       7          g
## 4       10          h
## 6        9          i
## 22       4          j
## 24       9          k
## 26       4          l
## 3       10          n
## 8        4          p
## 10       2          q
## 16       4          r
## 13       0          s
## 18       7          u
## 17      10          v
## 1        1          w
## 12       6          x
## 21       0          y
## 19       5          z
## 5       NA       <NA>
## 7       NA       <NA>
## 20      NA       <NA>
## 23      NA       <NA>
# MyDF3 <- MyDF2[!rowSums(is.na(MyDF2)),]
MyDF3 <- MyDF2[complete.cases(MyDF2),]
print(MyDF3)
##    my_unis my_letters
## 25       1          a
## 2       10          b
## 15       0          c
## 14       5          d
## 9        1          f
## 11       7          g
## 4       10          h
## 6        9          i
## 22       4          j
## 24       9          k
## 26       4          l
## 3       10          n
## 8        4          p
## 10       2          q
## 16       4          r
## 13       0          s
## 18       7          u
## 17      10          v
## 1        1          w
## 12       6          x
## 21       0          y
## 19       5          z
mean(MyDF3[,"my_unis"])
## [1] 4.954545