Problem 1: Vectors in R

Vector Definition

Although there exists a function called vector() in R, vectors are always defined in R using the function c() which stands for “concatenation”.

Vector Assignment

Let us assume we want to assign the following vector \(a\)

\[a = \left[\begin{array}{c} 10 \\ 7 \\ 43 \end{array}\right]\] to the variable named a in R, then this can be done with the following statement

a <- c(10,7,43)

Access of single Vector Element

A single vector element can be accessed using the variable name followed by the element index in brackets. Hence, if we want to know the first element of vector a, we have to write

a[1]
[1] 10

Computations with Vector Elements

Vector elements can be used in arithmetic operations such as summation, subtraction and multiplication as shown below

a[1] + a[3]
[1] 53
a[2] * a[3]
[1] 301
a[3] - a[1]
[1] 33

The function sum() can be used to compute the sum of all vector elements. The function mean() computes the mean of all vector elements.

sum(a)
[1] 60
mean(a)
[1] 20

Vector Computations

Arithmetic operations can also be performed not only on elements of vectors but also on complete vectors. Hence, we can add the vector a to itself or we can multiply it by a factor of 3.5 which is shown in the following code-chunk

a + a
[1] 20 14 86
3.5 * a
[1]  35.0  24.5 150.5

More Computations on Vectors

Given are the following two vectors \(v\) and \(w\).

\[v = \left[\begin{array}{c} 3 \\ -5 \\ 1 \\ 9 \\ \end{array}\right]\]

\[w = \left[\begin{array}{c} 1 \\ 9 \\ -12 \\ 27 \\ \end{array}\right]\]

Compute

  • the sum \(v+w\),
  • the difference \(v-w\) and
  • the dot product \(v\cdot w\).

Your Solution

The following steps could be helpful for the solution

  • Start by assigning the vectors to variables
  • Perform the arithmetic operations with the variables
  • Compute the dot-product either with crossprod() or with the operator %*%

Problem 2: Matrices in R

Matrices in R are defined using the function matrix(). The function matrix() takes as first arguments all the elements of the matrix as a vector and as further arguments the number of rows and the number of columns. The following statment generates a matrix with \(4\) rows and \(3\) columns containing all integer numbers from \(1\) to \(12\).

mat_by_col <- matrix(1:12, nrow = 4, ncol = 3)
mat_by_col
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

As can be seen, the matrix elements are ordered by columns. Often, we want to define a matrix where elements are filled by rows. This can by done using the option byrow=TRUE

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

Access of Matrix Elements

Matrix elements can be accessed similarly to what was shown for vectors. But to access a single element, we need two indices, one for rows and one for columns. Hence the matrix element in the second row and third column can be accessed by

mat_by_row[2,3]
[1] 6

Arithmetic Computations with Matrices

Arithmetic computations with matrices can be done with the well-known operators as long as the matrices are compatible. For summation and subtraction matrices must have the same number of rows and columns. For matrix-multiplication, the number of columns of the first matrix must be equal to the number of rows of the second matrix.

In R the arithmetic operators +, - and * all perform element-wise operations. The matrix multiplication can either be done using the operator %*% or the function crossprod(). It has to be noted that the statement

crossprod(A, B)

computes the matrix-product \(A^T \cdot B\) where \(A^T\) stands for the transpose of matrix \(A\). Hence the matrix product \(A \cdot B\) would have to be computed as

crossprod(t(A), B)

More Examples

Given the matrices X and Y

X <- matrix(1:15, nrow = 5, ncol = 3)
Y <- matrix(16:30, nrow = 5, ncol = 3)

Compute

  • \(X + Y\)
  • \(Y - X\)
  • multiplication of elements between \(X\) and \(Y\)
  • matrix-product \(X^T \cdot Y\)
  • matrix-product \(X^T \cdot X\)
  • matrix-product \(Y^T \cdot Y\)

Your Solution

  • Matrices must be assigned to variables as shown above
  • Arithmethic operations are performed
  • Matrix muliplications can be done with crossprod

Latest Changes: 2022-09-30 05:22:15 (pvr)

LS0tCnRpdGxlOiBMaXZlc3RvY2sgQnJlZWRpbmcgYW5kIEdlbm9taWNzIC0gTm90ZWJvb2sgMgphdXRob3I6IFBldGVyIHZvbiBSb2hyCmRhdGU6ICcyMDIyLTA5LTI5JwpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKcGFyYW1zOgogIGRvY3R5cGU6CiAgICBsYWJlbDogRG9jdW1lbnQgVHlwZQogICAgdmFsdWU6IHNvbHV0aW9uCiAgICBjaG9pY2VzOgogICAgLSBleGVyY2lzZQogICAgLSBzb2x1dGlvbgogICAgLSBub3RlYm9vawogIGlzb25saW5lOgogICAgbGFiZWw6IE9ubGluZSAoeS9uKQogICAgdmFsdWU6IHRydWUKICAgIGNob2ljZXM6CiAgICAtIHRydWUKICAgIC0gZmFsc2UKLS0tCgoKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKCiMjIFByb2JsZW0gMTogVmVjdG9ycyBpbiBSCgojIyMgVmVjdG9yIERlZmluaXRpb24KQWx0aG91Z2ggdGhlcmUgZXhpc3RzIGEgZnVuY3Rpb24gY2FsbGVkIGB2ZWN0b3IoKWAgaW4gUiwgdmVjdG9ycyBhcmUgYWx3YXlzIGRlZmluZWQgaW4gUiB1c2luZyB0aGUgZnVuY3Rpb24gYGMoKWAgd2hpY2ggc3RhbmRzIGZvciAiY29uY2F0ZW5hdGlvbiIuIAoKIyMjIFZlY3RvciBBc3NpZ25tZW50CkxldCB1cyBhc3N1bWUgd2Ugd2FudCB0byBhc3NpZ24gdGhlIGZvbGxvd2luZyB2ZWN0b3IgJGEkIAoKJCRhID0gXGxlZnRbXGJlZ2lue2FycmF5fXtjfQoxMCBcXAo3IFxcCjQzClxlbmR7YXJyYXl9XHJpZ2h0XSQkCnRvIHRoZSB2YXJpYWJsZSBuYW1lZCBgYWAgaW4gUiwgdGhlbiB0aGlzIGNhbiBiZSBkb25lIHdpdGggdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQKCmBgYHtyIHZlYy1hc3NpZ259CmEgPC0gYygxMCw3LDQzKQpgYGAKCiMjIyBBY2Nlc3Mgb2Ygc2luZ2xlIFZlY3RvciBFbGVtZW50CkEgc2luZ2xlIHZlY3RvciBlbGVtZW50IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB0aGUgdmFyaWFibGUgbmFtZSBmb2xsb3dlZCBieSB0aGUgZWxlbWVudCBpbmRleCBpbiBicmFja2V0cy4gSGVuY2UsIGlmIHdlIHdhbnQgdG8ga25vdyB0aGUgZmlyc3QgZWxlbWVudCBvZiB2ZWN0b3IgYGFgLCB3ZSBoYXZlIHRvIHdyaXRlCgpgYGB7ciBmaXJzdC1lbGVtZW50fQphWzFdCmBgYAoKIyMjIENvbXB1dGF0aW9ucyB3aXRoIFZlY3RvciBFbGVtZW50cwpWZWN0b3IgZWxlbWVudHMgY2FuIGJlIHVzZWQgaW4gYXJpdGhtZXRpYyBvcGVyYXRpb25zIHN1Y2ggYXMgc3VtbWF0aW9uLCBzdWJ0cmFjdGlvbiBhbmQgbXVsdGlwbGljYXRpb24gYXMgc2hvd24gYmVsb3cKCmBgYHtyIGFyaXRobWV0aWMtb3BlcmF0aW9ufQphWzFdICsgYVszXQphWzJdICogYVszXQphWzNdIC0gYVsxXQpgYGAKClRoZSBmdW5jdGlvbiBgc3VtKClgIGNhbiBiZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHN1bSBvZiBhbGwgdmVjdG9yIGVsZW1lbnRzLiBUaGUgZnVuY3Rpb24gYG1lYW4oKWAgY29tcHV0ZXMgdGhlIG1lYW4gb2YgYWxsIHZlY3RvciBlbGVtZW50cy4gCgpgYGB7ciBzdW0tbWVhbn0Kc3VtKGEpCm1lYW4oYSkKYGBgCgojIyMgVmVjdG9yIENvbXB1dGF0aW9ucwpBcml0aG1ldGljIG9wZXJhdGlvbnMgY2FuIGFsc28gYmUgcGVyZm9ybWVkIG5vdCBvbmx5IG9uIGVsZW1lbnRzIG9mIHZlY3RvcnMgYnV0IGFsc28gb24gY29tcGxldGUgdmVjdG9ycy4gSGVuY2UsIHdlIGNhbiBhZGQgdGhlIHZlY3RvciBgYWAgdG8gaXRzZWxmIG9yIHdlIGNhbiBtdWx0aXBseSBpdCBieSBhIGZhY3RvciBvZiAzLjUgd2hpY2ggaXMgc2hvd24gaW4gdGhlIGZvbGxvd2luZyBjb2RlLWNodW5rCgpgYGB7ciB2ZWN0b3ItY29tcHV0YXRpb259CmEgKyBhCjMuNSAqIGEKYGBgCgojIyMgTW9yZSBDb21wdXRhdGlvbnMgb24gVmVjdG9ycwoKR2l2ZW4gYXJlIHRoZSBmb2xsb3dpbmcgdHdvIHZlY3RvcnMgJHYkIGFuZCAkdyQuIAoKJCR2ID0gXGxlZnRbXGJlZ2lue2FycmF5fXtjfQogICAzICBcXCAKICAtNSAgXFwgCiAgIDEgIFxcIAogICA5ICBcXAogIFxlbmR7YXJyYXl9XHJpZ2h0XSQkCiAgCiQkdyA9IFxsZWZ0W1xiZWdpbnthcnJheX17Y30KICAgIDEgIFxcIAogICAgOSAgXFwgCiAgLTEyICBcXCAKICAgMjcgIFxcCiAgXGVuZHthcnJheX1ccmlnaHRdJCQKCgpDb21wdXRlCgoqIHRoZSBzdW0gJHYrdyQsIAoqIHRoZSBkaWZmZXJlbmNlICR2LXckIGFuZCAKKiB0aGUgZG90IHByb2R1Y3QgJHZcY2RvdCB3JC4gCgoKIyMjIFlvdXIgU29sdXRpb24KVGhlIGZvbGxvd2luZyBzdGVwcyBjb3VsZCBiZSBoZWxwZnVsIGZvciB0aGUgc29sdXRpb24KCiogU3RhcnQgYnkgYXNzaWduaW5nIHRoZSB2ZWN0b3JzIHRvIHZhcmlhYmxlcwoqIFBlcmZvcm0gdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyB3aXRoIHRoZSB2YXJpYWJsZXMKKiBDb21wdXRlIHRoZSBkb3QtcHJvZHVjdCBlaXRoZXIgd2l0aCBgY3Jvc3Nwcm9kKClgIG9yIHdpdGggdGhlIG9wZXJhdG9yIGAlKiVgCgoKCgoKIyMgUHJvYmxlbSAyOiBNYXRyaWNlcyBpbiBSCk1hdHJpY2VzIGluIFIgYXJlIGRlZmluZWQgdXNpbmcgdGhlIGZ1bmN0aW9uIGBtYXRyaXgoKWAuIFRoZSBmdW5jdGlvbiBgbWF0cml4KClgIHRha2VzIGFzIGZpcnN0IGFyZ3VtZW50cyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoZSBtYXRyaXggYXMgYSB2ZWN0b3IgYW5kIGFzIGZ1cnRoZXIgYXJndW1lbnRzIHRoZSBudW1iZXIgb2Ygcm93cyBhbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zLiBUaGUgZm9sbG93aW5nIHN0YXRtZW50IGdlbmVyYXRlcyBhIG1hdHJpeCB3aXRoICQ0JCByb3dzIGFuZCAkMyQgY29sdW1ucyBjb250YWluaW5nIGFsbCBpbnRlZ2VyIG51bWJlcnMgZnJvbSAkMSQgdG8gJDEyJC4gCgpgYGB7cn0KbWF0X2J5X2NvbCA8LSBtYXRyaXgoMToxMiwgbnJvdyA9IDQsIG5jb2wgPSAzKQptYXRfYnlfY29sCmBgYAoKQXMgY2FuIGJlIHNlZW4sIHRoZSBtYXRyaXggZWxlbWVudHMgYXJlIG9yZGVyZWQgYnkgY29sdW1ucy4gT2Z0ZW4sIHdlIHdhbnQgdG8gZGVmaW5lIGEgbWF0cml4IHdoZXJlIGVsZW1lbnRzIGFyZSBmaWxsZWQgYnkgcm93cy4gVGhpcyBjYW4gYnkgZG9uZSB1c2luZyB0aGUgb3B0aW9uIGBieXJvdz1UUlVFYCAKCmBgYHtyfQptYXRfYnlfcm93IDwtIG1hdHJpeCgxOjEyLCBucm93ID0gNCwgbmNvbCA9IDMsIGJ5cm93ID0gVFJVRSkKbWF0X2J5X3JvdwpgYGAKCiMjIyBBY2Nlc3Mgb2YgTWF0cml4IEVsZW1lbnRzCk1hdHJpeCBlbGVtZW50cyBjYW4gYmUgYWNjZXNzZWQgc2ltaWxhcmx5IHRvIHdoYXQgd2FzIHNob3duIGZvciB2ZWN0b3JzLiBCdXQgdG8gYWNjZXNzIGEgc2luZ2xlIGVsZW1lbnQsIHdlIG5lZWQgdHdvIGluZGljZXMsIG9uZSBmb3Igcm93cyBhbmQgb25lIGZvciBjb2x1bW5zLiBIZW5jZSB0aGUgbWF0cml4IGVsZW1lbnQgaW4gdGhlIHNlY29uZCByb3cgYW5kIHRoaXJkIGNvbHVtbiBjYW4gYmUgYWNjZXNzZWQgYnkgCgpgYGB7cn0KbWF0X2J5X3Jvd1syLDNdCmBgYAoKCiMjIyBBcml0aG1ldGljIENvbXB1dGF0aW9ucyB3aXRoIE1hdHJpY2VzCkFyaXRobWV0aWMgY29tcHV0YXRpb25zIHdpdGggbWF0cmljZXMgY2FuIGJlIGRvbmUgd2l0aCB0aGUgd2VsbC1rbm93biBvcGVyYXRvcnMgYXMgbG9uZyBhcyB0aGUgbWF0cmljZXMgYXJlIGNvbXBhdGlibGUuIEZvciBzdW1tYXRpb24gYW5kIHN1YnRyYWN0aW9uIG1hdHJpY2VzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucy4gRm9yIG1hdHJpeC1tdWx0aXBsaWNhdGlvbiwgdGhlIG51bWJlciBvZiBjb2x1bW5zIG9mIHRoZSBmaXJzdCBtYXRyaXggbXVzdCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHJvd3Mgb2YgdGhlIHNlY29uZCBtYXRyaXguIAoKSW4gUiB0aGUgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYCtgLCBgLWAgYW5kIGAqYCBhbGwgcGVyZm9ybSBlbGVtZW50LXdpc2Ugb3BlcmF0aW9ucy4gVGhlIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBjYW4gZWl0aGVyIGJlIGRvbmUgdXNpbmcgdGhlIG9wZXJhdG9yIGAlKiVgIG9yIHRoZSBmdW5jdGlvbiBgY3Jvc3Nwcm9kKClgLiBJdCBoYXMgdG8gYmUgbm90ZWQgdGhhdCB0aGUgc3RhdGVtZW50IAoKYGBgCmNyb3NzcHJvZChBLCBCKQpgYGAKCmNvbXB1dGVzIHRoZSBtYXRyaXgtcHJvZHVjdCAkQV5UIFxjZG90IEIkIHdoZXJlICRBXlQkIHN0YW5kcyBmb3IgdGhlIHRyYW5zcG9zZSBvZiBtYXRyaXggJEEkLiBIZW5jZSB0aGUgbWF0cml4IHByb2R1Y3QgJEEgXGNkb3QgQiQgd291bGQgaGF2ZSB0byBiZSBjb21wdXRlZCBhcyAKCmBgYApjcm9zc3Byb2QodChBKSwgQikKYGBgCgoKIyMjIE1vcmUgRXhhbXBsZXMKR2l2ZW4gdGhlIG1hdHJpY2VzIFggYW5kIFkKCmBgYHtyfQpYIDwtIG1hdHJpeCgxOjE1LCBucm93ID0gNSwgbmNvbCA9IDMpClkgPC0gbWF0cml4KDE2OjMwLCBucm93ID0gNSwgbmNvbCA9IDMpCmBgYAoKQ29tcHV0ZSAKCi0gJFggKyBZJAotICRZIC0gWCQKLSBtdWx0aXBsaWNhdGlvbiBvZiBlbGVtZW50cyBiZXR3ZWVuICRYJCBhbmQgJFkkCi0gbWF0cml4LXByb2R1Y3QgJFheVCBcY2RvdCBZJAotIG1hdHJpeC1wcm9kdWN0ICRYXlQgXGNkb3QgWCQKLSBtYXRyaXgtcHJvZHVjdCAkWV5UIFxjZG90IFkkCgoKCiMjIyBZb3VyIFNvbHV0aW9uCgoqIE1hdHJpY2VzIG11c3QgYmUgYXNzaWduZWQgdG8gdmFyaWFibGVzIGFzIHNob3duIGFib3ZlCiogQXJpdGhtZXRoaWMgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkCiogTWF0cml4IG11bGlwbGljYXRpb25zIGNhbiBiZSBkb25lIHdpdGggYGNyb3NzcHJvZGAKCgoKIAoKCmBgYHtyLCBlY2hvPUZBTFNFLCByZXN1bHRzPSdhc2lzJ30KY2F0KCdcbi0tLVxuXG4gX0xhdGVzdCBDaGFuZ2VzOiAnLCBmb3JtYXQoU3lzLnRpbWUoKSwgJyVZLSVtLSVkICVIOiVNOiVTJyksICcgKCcsIFN5cy5pbmZvKClbJ3VzZXInXSwgJylfXG4nLCBzZXAgPSAnJykKYGBgCiAK