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

Spencer Graves spencer.graves at prodsyse.com
Thu Jun 7 12:11:11 CEST 2012


On 6/7/2012 2:27 AM, Rui Barradas wrote:
> Hello,
>
> To my great surprise, on my system, Windows 7, R 15.0, 32 bits, an R 
> version is faster!

I was also surprised, Windows 7, R 2.15.0, 64-bit


 > rbind(diag=t1, Rdiag=t2, ratio=t1/t2)
       user.self sys.self elapsed user.child sys.child
diag       0.72 0.080000    0.81         NA        NA
Rdiag      0.09 0.030000    0.12         NA        NA
ratio      8.00 2.666667    6.75         NA        NA
 >
 > sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods
[8] base

other attached packages:
[1] fda_2.2.9      Matrix_1.0-6   lattice_0.20-6 zoo_1.7-7

loaded via a namespace (and not attached):
[1] grid_2.15.0  tools_2.15.0
 >


       Spencer
>
>
> 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