(This article was first published on Rmazing, and kindly contributed to R-bloggers)
I have been working with R for some time now, but once in a while, basic functions catch my eye that I was not aware of…
For some project I wanted to transform a correlation matrix into a covariance matrix. Now, since cor2cov does not exist, I thought about “reversing” the cov2cor function (stats:::cov2cor).
Inside the code of this function, a specific line jumped into my retina:
r[] <- Is * V * rep(Is, each = p)
What’s this [ ]?
Well, it stands for every element of matrix
. Consider this:
mat <- matrix(NA, nrow = 5, ncol = 5)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] NA NA NA NA NA
[2,] NA NA NA NA NA
[3,] NA NA NA NA NA
[4,] NA NA NA NA NA
[5,] NA NA NA NA NA
With the empty bracket, we can now substitute ALL values by a new value:
mat[] <- 1
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 1 1 1 1 1
[3,] 1 1 1 1 1
[4,] 1 1 1 1 1
[5,] 1 1 1 1 1
Interestingly, this also works with lists:
L <- list(a = 1, b = 2, c = 3)>L $a [1] 1 $b [1] 2 $c [1] 3L[] <- 5> L $a [1] 5 $b [1] 5 $c [1] 5 Cheers, Andrej
Filed under: R Internals Tagged: all elements, empty bracket, matrix![]()
To leave a comment for the author, please follow the link and comment on his blog: Rmazing.
R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

Zero Inflated Models and Generalized Linear Mixed Models with R.
Zuur, Saveliev, Ieno (2012).