[R] Vectorizing a "for" loop

Dimitris Rizopoulos dimitris.rizopoulos at med.kuleuven.be
Thu Aug 3 16:36:35 CEST 2006


try this:

abs(outer(rows, columns, "-"))


Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Daniel Gerlanc" <dgerlanc at gmail.com>
To: <r-help at stat.math.ethz.ch>
Sent: Thursday, August 03, 2006 4:10 PM
Subject: [R] Vectorizing a "for" loop


> Hello all,
>
> Consider the following problem:
>
> There are two vectors:
>
> rows <- c(1, 2, 3, 4, 5)
> columns <- c(10, 11, 12, 13, 14)
>
> I want to create a matrix with dimensions length(rows) x 
> length(columns):
>
> res <- matrix(nrow = length(rows), ncol = length(columns))
>
> If "i" and "j" are the row and column indexes respectively, the 
> values
> of the cells are abs(rows[i] - columns[j]).  The resultant matrix
> follows:
>
>     [,1] [,2] [,3] [,4] [,5]
> [1,]    9   10   11   12   13
> [2,]    8    9    10   11   12
> [3,]    7    8      9   10   11
> [4,]    6    7      8     9   10
> [5,]    5    6      7     8    9
>
> This matrix may be generated by using a simple "for" loop:
>
> for(i in 1:length(rows)){
>  for(j in 1:length(columns)){
>    res[i,j] <- abs(rows[i] - columns[j])
>  }
> }
>
> Is there a quicker, vector-based approach for doing this or a 
> function
> included in the recommended packages that does this?
>
> Thanks!
>
> -- Dan Gerlanc
> Williams College
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



More information about the R-help mailing list