[R] Vectorizing a "for" loop

Neuro LeSuperHéros neuro3000 at hotmail.com
Thu Aug 3 16:25:32 CEST 2006


Sorry,

I used ex instead of expanded (was working name).

rows <- c(1, 2, 3, 4, 5)
columns <- c(10, 11, 12, 13, 14)
expanded <-expand.grid(rows,columns)
abslist <-abs(expanded$Var1-expanded$Var2)
res <- matrix(abslist,nrow = length(rows), ncol = length(columns))

Désolé encore

Neuro


>From: "Daniel Gerlanc" <dgerlanc at gmail.com>
>Reply-To: dgerlanc at gmail.com
>To: r-help at stat.math.ethz.ch
>Subject: [R] Vectorizing a "for" loop
>Date: Thu, 3 Aug 2006 10:10:46 -0400
>
>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.



More information about the R-help mailing list