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