This error occurs when you try to perform matrix multiplication with a data frame instead of a matrix. The
%*% operator cannot handle data frames. You can solve the error by converting the data frame to a matrix using the
as.matrix() function. For example,
data <- data.frame(x = 1:4, y = c(4, 9, 1, 10), z = sample(200, 4)) mat <- as.matrix(data)
This tutorial will go through the error in detail with code examples.
Let’s look at an example to reproduce the error. First, we will define a data frame.
# Create data frame data <- data.frame(x = 1:4, y = c(4, 9, 1, 10), z = sample(200, 4))
x y z 1 1 4 73 2 2 9 172 3 3 1 107 4 4 10 114
Next, we will try to multiply the data frame by its transpose using the matrix multiplication operator %*%.
# Get transpose of data frame using t() and attempt multiply by original data frame data_by_transpose <- t(data) %*% data
Let’s run the code to see what happens:
Error in t(data) %*% data : requires numeric/complex matrix/vector arguments
The error occurs because we are attempting to do matrix multiplication, but the
%*% handles matrix objects, not data frames.
We can solve the error by converting the data frame to a matrix using the
mat <- as.matrix(data) mat
x y z [1,] 1 4 73 [2,] 2 9 172 [3,] 3 1 107 [4,] 4 10 114
Once we have the matrix, we can perform the matrix multiplication operation.
data_by_transpose <- t(mat) %*% mat
Let’s run the code to get the resultant matrix.
x y z x 30 65 1194 y 65 198 3087 z 1194 3087 59358
Congratulations on reading to the end of this tutorial!
For further reading on R-related errors, go to the articles:
- How to Solve R Error: mapping should be created with aes() or aes_()
- How to Solve R Error: Could not find function “%”
Go to the online courses page on R to learn more about coding in R for data science and machine learning.
Have fun and happy researching!