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

Rui Barradas ruipbarradas at sapo.pt
Thu Jun 7 13:00:08 CEST 2012


Em 07-06-2012 11:26, Prof Brian Ripley escreveu:
> On 07/06/2012 10:27, Rui Barradas wrote:
>> Hello,
>>
>> To my great surprise, on my system, Windows 7, R 15.0, 32 bits, an R
>> version is faster!
>
> Faster than what? diag() is written entirely in R, just more general
> than yours and so one would expect it to be slower.

I'm at my other's laptop so I haven't checked the diag() source but 
since generally vector and matrix creation functions are faster than R 
code I expected it to be the same for diag().
I'll check it as soon as possible.

Rui Barradas

>
> I have to say that we don't see a fast identity as a priority, as it
> almost always can be eliminated from calculations, and for large
> matrices one would want to use a sparse representation such as package
> Matrix.
>
>>
>>
>> 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.
>>>
>>
>> ______________________________________________
>> 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