[R] Vectorizing a "for" loop
Daniel Gerlanc
dgerlanc at gmail.com
Thu Aug 3 16:10:46 CEST 2006
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
More information about the R-help
mailing list