[R] for loop query
Robin Hankin
rksh1 at cam.ac.uk
Tue Dec 9 12:56:18 CET 2008
Hi
start simple!
Work out *each* row combined with *each* row,
to give (in your case) a 26-by-26 matrix.
Only after you have got this working, start thinking about
making it run faster [eg by
only evaluating the upper triangular entries]
To do a nested loop, do
M <- matrix(0,n,n)
for(i in seq_len(n)){
for(j in seq_len(n)){
M[i,j] <- f(i,j)
}
}
which will fill in matrix M for you.
HTH
rksh
Gerard M. Keogh wrote:
> Hi all,
>
> apologies if this is obvious - but I can't see it and would appreciate some
> quick help!
>
> the matrix mhouse is 26x3 and I'm computing odds ratios. The simple code
> below "should" compute the odds vector for every pair (325) i.e. 26C2 in
> cols 1 and 2.
> On the first i=1 outer loop the inner j loop runs from 2 to 26 ok and then
> I get the error (Error: subscript out of bounds)
>
> Why isn't my loop incrementing i - the outer loop to 2 and then resetting
> j=3?
> Am I missing something obvious?
>
> thanks
>
> Gerard
>
>
> > mhouse
> [,1] [,2] [,3]
> [1,] 275 819 49
> [2,] 593 1323 192
> [3,] 813 1181 292
> [4,] 2177 5189 1320
> [5,] 1651 2243 270
> [6,] 1061 5629 11035
> [7,] 1690 2302 589
> [8,] 1130 1203 345
> [9,] 565 1898 655
> [10,] 580 730 234
> [11,] 343 1761 73
> [12,] 372 536 67
> [13,] 666 1713 397
> [14,] 382 918 279
> [15,] 486 921 247
> [16,] 1141 988 313
> [17,] 626 1135 666
> [18,] 438 436 168
> [19,] 425 691 101
> [20,] 609 716 99
> [21,] 467 661 141
> [22,] 879 1373 79
> [23,] 444 1101 130
> [24,] 459 898 351
> [25,] 995 1801 398
> [26,] 396 1107 201
> > # set up the odds vector by declaring it to be null
> > odds=NULL
> >
> > # compute the odds ratios for Individual House vs Scheme House
> > for (i in 1:25)
> + {
> + for (j in i+1:26)
> + {
> + todds = (mhouse[i,1]*mhouse[j,2])/(mhouse[j,1]*mhouse[i,2])
> + # compute the todds for row i with row j:
> j>i
> + odds = c(odds,todds)
> + # append todds to the odds vector
> + }
> + }
> Error: subscript out of bounds
> > odds
> [1] 0.7491244 0.4877622 0.8003391 0.4561745 1.7814132 0.4573697
> 0.3574670 1.1279674 0.4226138 1.7239078 0.4838053
> [12] 0.8636384 0.8069156 0.6363150 0.2907502 0.6087939 0.3342421
> 0.5459312 0.3947703 0.4752623 0.5244818 0.8326321
> [23] 0.6569199 0.6077702 0.9386447
> >
>
>
> **********************************************************************************
> The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. It is the policy of the Department of Justice, Equality and Law Reform and the Agencies and Offices using its IT services to disallow the sending of offensive material.
> Should you consider that the material contained in this message is offensive you should contact the sender immediately and also mailminder[at]justice.ie.
>
> Is le haghaidh an duine nó an eintitis ar a bhfuil sí dírithe, agus le haghaidh an duine nó an eintitis sin amháin, a bheartaítear an fhaisnéis a tarchuireadh agus féadfaidh sé go bhfuil ábhar faoi rún agus/nó faoi phribhléid inti. Toirmisctear aon athbhreithniú, atarchur nó leathadh a dhéanamh ar an bhfaisnéis seo, aon úsáid eile a bhaint aisti nó aon ghníomh a dhéanamh ar a hiontaoibh, ag daoine nó ag eintitis seachas an faighteoir beartaithe. Má fuair tú é seo trí dhearmad, téigh i dteagmháil leis an seoltóir, le do thoil, agus scrios an t-ábhar as aon ríomhaire. Is é beartas na Roinne Dlí agus Cirt, Comhionannais agus Athchóirithe Dlí, agus na nOifígí agus na nGníomhaireachtaí a úsáideann seirbhísí TF na Roinne, seoladh ábhair cholúil a dhícheadú.
> Más rud é go measann tú gur ábhar colúil atá san ábhar atá sa teachtaireacht seo is ceart duit dul i dteagmháil leis an seoltóir láithreach agus le mailminder[ag]justice.ie chomh maith.
> ***********************************************************************************
>
>
>
> ______________________________________________
> R-help at r-project.org 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.
>
--
Robin K. S. Hankin
Uncertainty Analyst
University of Cambridge
19 Silver Street
Cambridge CB3 9EP
01223-764877
More information about the R-help
mailing list