On Wed, Mar 28, 2012 at 5:34 PM, Dai, Hongying, <hdai@cmh.edu> wrote:

> Dear R users,
>
> I'm wondering how I can generate an arbitrary number of loops in R.
> For instance, I can generate two "for" loops to get ICC among any two-way
> combination among 10 variables. Here is the code
>
> n<-10
> for (i in 1:(n-1))
> {
> for (j in (i+1):n)
> {
> icc(cbind(DATA[,i],DATA[,j]))
> }
> }
> If I need three-way combination, then a code with three "for" loops will
> be:
> n<-10
> for (i in 1:(n-2))
> {
> for (j in (i+1):(n-1))
> {
> for (k in (j+1):n)
> {
> icc(cbind(DATA[,i],DATA[,j],DATA[,k]))
> }
> }
> }
> But how can I write a code if I need all m=2, 3, 4,... loops for arbitrary
> m-way combinations?
> Thanks!
> Daisy
>

For your specific specific case,

    combn(10, m, function(v) icc(DATA[,v]))

My 'v' is your c(i,j) or c(i,j,k), etc.

In general, Sarah is right, recursion gives the neater code, and this
discussion probably doesn't belong here.

It can be achieved without recursion; I'd gladly share code that does the
equivalent of combn (which is what Daisy is asking for) both ways.  I wrote
it many years ago in C, and the non-recursive code is probably the only
time I used the 'goto' statement :-)

/Christian

	[[alternative HTML version deleted]]

