Site icon R-bloggers

Matrix exercises

[This article was first published on R-exercises, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.


Please note, solutions are available here.
Exercise 1
Create three vectors  x,y,z  with integers and each vector has 3 elements. Combine the three vectors to become a 3×3 matrix  A  where each column represents a vector. Change the row names to  a,b,c.
Think: How about each row represents a vector, can you modify your code to implement it?

Exercise 2
Please check your result from Exercise 1, using  is.matrix(A). It should return  TRUE, if your answer is correct. Otherwise, please correct your answer. Hint: Note that  is.matrix()  will return  FALSE  on a non-matrix type of input. Eg: a vector and so on.

Exercise 3
Create a vector with 12 integers. Convert the vector to a 4*3 matrix  B  using  matrix(). Please change the column names to  x, y, z  and row names to  a, b, c, d.
The argument  byrow  in  matrix()  is set to be  FALSE  by default. Please change it to  TRUE  and print  B  to see the differences.

Exercise 4
Please obtain the transpose matrix of  B  named  tB .

Exercise 5
Now  tB  is a 3×4 matrix. By the rule of matrix multiplication in algebra, can we perform  tB*tB  in R language? (Is a 3×4 matrix multiplied by a 3×4 allowed?) What result would we get?

Exercise 6
As we can see from Exercise 5, we were expecting that  tB*tB  would not be allowed because it disobeys the algebra rules. But it actually went through the computation in R. However, as we check the output result , we notice the multiplication with a single  *  operator is performing the componentwise multiplication. It is not the conventional matrix multiplication. How to perform the conventional matrix multiplication in R? Can you compute matrix  A  multiplies  tB ?

Exercise 7
If we convert  A  to a  data.frame  type instead of a  matrix , can we still compute a conventional matrix multiplication for matrix  A  multiplies matrix  A ? Is there any way we could still perform the matrix multiplication for two  data.frame  type variables? (Assuming proper dimension)

Exercise 8
Extract a sub-matrix from  B  named  subB . It should be a 3×3 matrix which includes the last three rows of matrix  B  and their corresponding columns.

Exercise 9
Compute  3*A ,  A+subB ,  A-subB . Can we compute  A+B? Why?

Exercise 10
Generate a n * n matrix (square matrix)  A1  with proper number of random numbers, then generate another n * m matrix  A2.
If we have  A1*M=A2  (Here * represents the conventional multiplication), please solve for  M.
Hint: use the  runif()  and  solve()  functions. E.g.,  runif(9)  should give you 9 random numbers.

Image: “200px-Sudoku06u” by DrBorka from nl. Licensed under CC BY-SA 3.0 via Wikimedia Commons.

To leave a comment for the author, please follow the link and comment on their blog: R-exercises.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.