* NA means "not available", or missing * normally, the result of operating on an NA is another NA > ceiling(x) [1] -1 1 0 -1 1 NA * in this case, where x is a vector, the function is applied to each element in x * the ceiling() function rounds up to the next integer > floor(x) [1] -2 0 -1 -2 0 NA * floor() rounds down to the next integer > trunc(x) [1] -1 0 0 -1 0 NA * trunc() returns only the integer part of the elements of x > round(x) [1] -2 1 0 -2 0 NA * round() rounds values to the nearest integer value * values of n.5 are rounded to the nearest even integer > round(x,1) [1] -1.9 0.8 -0.3 -1.9 0.1 NA * optionally, round() can take a second argument which specifies the number of decimal places to round to > signif(x,2) [1] -1.900 0.760 -0.270 -1.900 0.086 NA * signif() rounds data to the specified number of significant digits * all the numbers are printed to the same format * 0's are added where necessary > print(x,digits=1) [1] -1.91 0.76 -0.27 -1.90 0.09 NA * the print() function with the optional argument digits prints the numeric object x to the specified number of significant digits * all the elements of x are then printed to the same format2. The following functions are used on vectors. In some cases, they may also be used on matrices, but you may not always get the result you expect.
> sum(x) [1] 15 * sum() calculates the sum of all the values in x > prod(x) [1] 120 * prod() calculates the product of all the elements in x > cumsum(x) [1] 1 3 6 10 15 * cumsum() returns an object with each element the sum of all the elements in x up to that point * if x is a matrix, cumsum() will find the cumulative sums columnwise > cumprod(x) [1] 1 2 6 24 120 * cumprod() returns an object with each element the product of all the elements in x up to that point> x_c(1,4,8,2,1)
> diff(x) [1] 3 4 -6 -1 * returns an object where the ith element is equal to x[i+1]-x[i] * when x is a matrix, the function diff() calculates the differences separately for each column > diff(x, lag=2) [1] 7 -2 -7 * optionally, the argument lag can be specified such that the ith element is equal to x[i+lag]-x[i] eg.: in this case 8-1, 2-4, 1-8 * the diff() functions returns a vector with length(x)-lag elements
+ Addition - Subtraction * Multiplication (performs elementwise multiplication on a matrix) / Division ^ Exponential x^2 == x*x x^(1/3) == the cube root of x %/% Integer divide e1%/%e2 == floor(e1/e2) %% Modulo function e1%%e2 == e1 - (e1%/%e2)*e2The usual arithmetic operators work as one would expect: if x is a numeric object, then x*2 multiplies each element of x by 2.
> x_c(-24,-99,82,15) > y_c(2,3) > x/y [1] -12 -33 41 5 * when one argument is longer than the other, the shorter argument is used cyclically, if necessary > x%/%10 [1] -3 -10 8 1 * this is equivalent to floor(x/10) * returns 0 when dividing by 0 * when x is a positive number, %/% returns the integer part of / > x%%10 [1] 6 1 2 5 * this is equivalent to x-10*(x%/%10) (ie.: the remainder of %/%) * returns x when dividing by 0- when x is a positive number, the integer divide and modulo functions can be used to break the number up into the digits that make it up, as was the case for the last two elements of x
> x_765 * more concisely: > x1_x %/% 100 x1_x %/% 100 > x1 x2_(x %% 100) %/% 10 [1] 7 x3_(x %% 100) %% 10 > x_x %% 100 > x [1] 65 > x2_x %/% 10 > x2 [1] 6 > x3_x %% 10 > x3 [1] 5
Name Operation sqrt square root abs absolute value sin cos tan trigonometric functions (radians) asin acos atan inverse trigonometric functions sinh cosh tanh hyperbolic functions asinh acosh atanh inverse hyperbolic functions exp log exponential and natural logarithm log10 common logarithm gamma lgamma gamma function and its natural log
Name Usage Operation t t(A) transpose %*% A%*%B matrix multiply crossprod crossprod(A,B) cross product outer outer(A,B) outer product svd svd(A) singular value decomposition qr qr(A) QR decomposition solve solve(A,B) solve equations or invert matrices eigen eigen(A) eigenvalues chol chol(A) Choleski decomposition
> square_matrix(c(1,2,3,4,5,6,7,8,9),nrow=3) > square [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > decomp_eigen(square) > decomp$values [1] 1.611684e+01 -1.116844e+00 -1.652234e-16 > decomp$vectors [,1] [,2] [,3] [1,] -0.5598757 0.8251730 -0.3767961 [2,] -0.6879268 0.2238583 0.7535922 [3,] -0.8159780 -0.3774565 -0.3767961* eigen() creates an object of mode list with two components: $values and $vectors
* alternatively, eigenvalues could have been obtained using eigen(square)$values, and eigenvectors using eigen(square)$vectors
Recall that the matrix size used in part 1 is:
Weight Waist heights [1,] 130 26 140 [2,] 110 24 155 [3,] 118 25 142 [4,] 112 25 175 [5,] 128 26 170The function apply() can be used to find the mean for each column in size:
> colmean_apply(size,2,mean) > colmean * the first argument gives the name of Weight Waist heights the matrix to which the function will 119.6 25.2 156.4 be applied * the second argument gives the dimensions over which the function is to be applied - in the case of a matrix, 1 indicates rows, 2 indicates columns * the third argument gives the name of the function to be applied; functions other than mean can be specified here > sweep(size,2,colmean) Weight Waist heights * sweep "sweeps out" the column means [1,] 10.4 0.8 -16.4 from the matrix size [2,] -9.6 -1.2 -1.4 * the first two arguments in sweep are [3,] -1.6 -0.2 -14.4 the same as in apply() [4,] -7.6 -0.2 18.6 * the third argument is a vector [5,] 8.4 0.8 13.6 containing the values to be "swept out" of the matrix > sweep(size,1,c(1,2,3,4,5),"+") Weight Waist heights * by default, sweep subtracts the [1,] 131 27 141 values in the third argument from [2,] 112 26 157 the rows or columns of the matrix [3,] 121 28 145 * this can be changed by specifying the [4,] 116 29 179 function in the fourth argument [5,] 133 31 175 * in this example, 1 is added to the first row, 2 to the second row, etc.
> rep(c(4,2),times=2) [1] 4 2 4 2 * the rep() function replicates input either a certain number of times or to a certain length > rep(c(4,2),times=c(2,1)) [1] 4 4 2 * when times is a single value, then the first argument is repeated that many times * when times is a vector, then each element in the first argument is matched with a number of times in the second argument > rep(c(4,2),length=3) [1] 4 2 4 * when the length argument is specified, the first argument is replicated to produce a vector of the length specified > seq(1,7,by=2) [1] 1 3 5 7 * seq() creates a sequence from a to b in steps specified in by (the default is by=1) > seq(1,-1,by=-0.5) [1] 1.0 0.5 0.0 -0.5 -1.0 > seq(1,7,length=3) [1] 1 4 7 * as with rep(), the length of the outcome can be specified in seq(), in which case the value for by is inferred > rev(seq(1,5)) [1] 5 4 3 2 1 * rev() reverses the order of a vector or list * rev() will also work on matrices, but the result will be a vector
> x_c(rep(1,3),seq(1,5,by=2),rev(seq(1,5,length=3)),rep(2,3)) > x [1] 1 1 1 1 3 5 5 3 1 2 2 2 > unique(x) [1] 1 3 5 2 * unique() returns the values of the input without any replications > sort(x) [1] 1 1 1 1 1 2 2 2 3 3 5 5 * sort() sorts data in ascending order * to sort by descending order, use > rev(sort(x)) > rank(x) [1] 3.0 3.0 3.0 3.0 9.5 11.5 11.5 9.5 3.0 7.0 7.0 7.0 * rank() returns the ranks of the input * in case of ties, the average of the ranks is returned > order(x) [1] 1 2 3 4 9 10 11 12 5 8 6 7 * order() returns the indices of the data in ascending order * the first element in order(x) tells you where the lowest value in x is, the second element tells you where the second lowest value in x is, etc. * sort() is equivalent to > x[order(x)]Recall that the matrix size used in part 1 is:
Weight Waist heights [1,] 130 26 140 [2,] 110 24 155 [3,] 118 25 142 [4,] 112 25 175 [5,] 128 26 170 > i_order(size[,1]) > i * returns the indices of Weight. in [1] 2 4 3 5 1 ascending order > size[i,] Weight Waist heights * returns the matrix size sorted by Weight [1,] 110 24 155 * i contains the order of the rows which [2,] 112 25 175 would sort the first column in increasing [3,] 118 25 142 order [4,] 128 26 170 * by putting i in the row subscript, all [5,] 130 26 140 the rows are printed out such that the first column is in increasing order > rle(x) $lengths: * computes the length and the value of runs [1] 4 1 2 1 1 3 of the same value in a vector $values: * here, x is made up of four 1's, one 3, [1] 1 3 5 3 1 2 two 5's, one 3, one 1, and three 2's
x = (2,6,9,17,39)Note: the geometric mean of n values is the n-th root of the product of the n values
Write the expression so that it will find the geometric mean of any vector x.
c) The following are marks for a student on 12 weekly quizzes marked out of 25.
quiz = 24 22 17 10 12 13 16 19 15 18 22 21Calculate the change in the student's marks from one quiz to the next.
d) Find the solution to the system of equations:
3(X1) + 2(X2) + 6(X3) = 44 5(X1) - 3(X2) + 4(X3) = 18 6(X1) + 3(X2) - 2(X3) = 14e) Create a vector containing the sum of each column of the matrix size.
Solutions (Middle mouse button for separate window)