[R] How to build a large identity matrix faster?

Rui Barradas ruipbarradas at sapo.pt
Thu Jun 7 11:27:40 CEST 2012


Hello,

To my great surprise, on my system, Windows 7, R 15.0, 32 bits, an R 
version is faster!


Rdiag <- function(n){
	m <- matrix(0, nrow=n, ncol=n)
	m[matrix(rep(seq_len(n), 2), ncol=2)] <- 1
	m
}

Rdiag(4)

n <- 5e3
t1 <- system.time(d1 <- diag(n))
t2 <- system.time(d2 <- Rdiag(n))
all.equal(d1, d2)
rbind(diag=t1, Rdiag=t2, ratio=t1/t2)


Anyway, why don't you create it once, save a copy and use it many times?

Hope this helps,

Rui Barradas

Em 07-06-2012 08:55, Ceci Tam escreveu:
> Hello, I am trying to build a large size identity matrix using diag(). The
> size is around 23000 and I've tried diag(23000), that took a long time.
> Since I have to use this operation several times in my program, the running
> time is too long to be tolerable. Are there any alternative for diag(N)?
> Thanks
>
> Cheers,
> yct
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list