[R] looping using combinatorics
Jesse Albert Canchola
jesse.canchola.b at bayer.com
Fri Jul 14 00:40:46 CEST 2006
I have a problem where I need to loop over the total combinations of
vectors (combined once chosen via combinatorics). Here is a
simplification of the problem:
STEP 1: Define three vectors a, b, c.
STEP 2: Combine all possible pairwise vectors (i.e., 3 choose 2 = 3
possible pairs of vectors: ab,ac, bc)
NOTE: the actual problem has 8 choose 4, 8 choose 5 and 8 choose 6
combinations.
STEP 3: Do the same math on each pairwise combination and spit out
answers each time
####### BEGIN CODE #######
#STEP 1
a1 <- c(1,2,3,4,5,6,7,8,9,10,11,12)
a <- matrix(a1,2,3,byrow=T)
a
b1 <- c(13,14,15,16,17,18,19,20,21,22,23,24)
b <- matrix(b1,2,3,byrow=T)
b
c1 <- c(25,26,27,28,29,30,31,32,33,34,35,36)
c <- matrix(b1,2,3,byrow=T)
c
# example: combine the first two vectors "a" and "b"
combab <- rbind(a,b)
# the a,b combined data from the algorithm later below should look like
# something like the following:
combab
# use the combinatorics "combn" function found in the "combinat" package
on CRAN
m <- combn(3,2) # three choose two combinations
m
# the first assignment below should be numeric and then subsequent
# assignments as character since the first time you assign a number to
# a character in a matrix the rest of the numbers in the matrix are
coerced to character
m[m==1]='a'; m[m=='2']='b'; m[m=='3']='c'
m
#STEP 2: combine pairwise vectors into a matrix or frame
for (i in dim(m)[1])
for (j in dim(m)[2])
{
combined <-
rbind(cat(format(m[i]),"\n"),cat(format(m[j]),"\n")) #cat/format removes
the quotes
combined
}
traceback()
#STEP 3: {not there yet}
################# END CODE ################
The problem is that in STEP 2 (not complete), the results in the rbind are
not recognized as the objects they represent (i.e., the "a" without quotes
is not recognized as the data object we defined in STEP 1. Perhaps this
is a parsing problem. Perhaps there is an alterative way to do this. I
looked pretty long and hard in the CRAN libraries but alas, I am stuck.
BTW, I picked up R about a month ago (I used primarily SAS, Stata and
SPSS).
Regards and TIA,
Jesse
Jesse A. Canchola
Biostatistician III
Bayer Healthcare
725 Potter St.
Berkeley, CA 94710
P: 510.705.5855
F: 510.705.5718
E: Jesse.Canchola.b at Bayer.Com
_______________________________________________________________________________________________
The information contained in this e-mail is for the exclusive use of the intended recipient(s) and may be confidential, proprietary, and/or legally privileged. Inadvertent disclosure of this message does not constitute a waiver of any privilege. If you receive this message in error, please do not directly or indirectly use, print, copy, forward, or disclose any part of this message. Please also delete this e-mail and all copies and notify the sender. Thank you.
For alternate languages please go to http://bayerdisclaimer.bayerweb.com
More information about the R-help
mailing list