From: Ray Brownrigg <Ray.Brownrigg_at_mcs.vuw.ac.nz>

Date: Thu, 01 May 2008 08:47:34 +1200

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. Received on Wed 30 Apr 2008 - 21:40:32 GMT

Date: Thu, 01 May 2008 08:47:34 +1200

On Thu, 01 May 2008, Zhandong Liu wrote:

> I am switching from Matlab to R, but I found that R is 200 times slower

*> than matlab.
**>
**> Since I am newbie to R, I must be missing some important programming tips.
**>
**> Please help me out on this.
**>
**> Here is the function:
**> ## make the full pair-wise permutation of a vector
**> ## input_fc=c(1,2,3);
**> ## output_fc=(
**> 1 1 1 2 2 2 3 3 3
**> 1 2 3 1 2 3 1 2 3
**> );
**>
**> grw_permute = function(input_fc){
**>
**> fc_vector = input_fc
**>
**> index = 1
**>
**> k = length(fc_vector)
**>
**> fc_matrix = matrix(0,2,k^2)
**>
**> for(i in 1:k){
**>
**> for(j in 1:k){
**>
**> fc_matrix[index] = fc_vector[i]
**>
**> fc_matrix[index+1] = fc_vector[j]
**>
**> index = index+2
**>
**> }
**>
**> }
**>
**> return(fc_matrix)
**>
**> }
**>
**> For an input vector of size 300. It took R 2.17 seconds to run.
**>
**> But the same code in matlab only needs 0.01 seconds to run.
*

I am not a MATLAB user, but I suspect it wasn't "the same code" that produced an answer in MATLAB, but you don't provide your MATLAB code, nor do you specify what version of R, of MATLAB, or what hardware and OS you are using.

I get {NetBSD, R version 2.6.0 (2007-10-03), Core 2 Duo, 3.x GHz}:

*> input_fc <- sample(1:600)
**> unix.time(a1 <- grw_permute(input_fc))
*

user system elapsed

3.279 -0.001 3.280

*> unix.time({n <- length(input_fc); a2 <- matrix(c(rep(input_fc, each=n),
*

rep(input_fc, n)), 2, n*n, byrow = T)})

user system elapsed

0.019 0.020 0.040

*> all.equal(a1, a2)
*

**[1] TRUE
**

*>
*

A sample of length 300 took less than 1 second using your grw_permute() (so
your OS may be making a difference as well).

*>
*

> Am I missing sth in R.. Is there a away to optimize. ???

*>
*

Yes. Loops are not efficient in R.

*> Thanks
*

**HTH,
**

Ray Brownrigg

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. Received on Wed 30 Apr 2008 - 21:40:32 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 30 Apr 2008 - 22:30:32 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*