On 02-Feb-08 21:16:41, R-novice wrote: > > I am trying to make an array c(3,8) that contains the averages of what > is in another array c(9,8). I want to average rows 1:3, 4:6, 7:9 and > have a loop replace the generic 1:24 values in my array with the > average of the three rows. > > The problem I am having is that R only replaces the last value from the > loops, and I am not experienced enough with R to know how it stores > data when looping and how to overcome this problem. By having it print > the avg, I was expecting to see 24 numbers, but it only gives me one. > > Here is my code. > > cts.sds<-array(1:24,c(3,8)) > for(i in 3){ > for(j in 8){ > avg<-sum(exprdata[3*i-2:3*i,j]/3) > cts.sds[i,j]<-avg > print(avg) > } > } > print(cts.sds) > > Any help with this pesky matter will be greatly appreciated.
I think you have made two types of mistake here. 1. You wrote "for(i in 3)" and "for(i in 3)". This means that 'i' will take only one value, namely 3; and 'j' will take only one value, namely 8. If you wanted to loop over i = 1,2,3 and j=1,2,3,4,5,6,7,8 then you should write for(i in (1:3)){ for(j in (1:8){ ... }} 2. This is more subtle, and you're far from the only person to have tripped over this one. Because of the order of precedence of the operators, in the epression 3*i-2:3*i for each value of 'i' it will first evaluate "2:3", namely {2,3}, and then evaluate the remainder. So, for say i=2, you will get two numbers 3*i-2*i = 2 and 3*i-3*i = 0, whereas what you presumably intended was (3*i-2):(3*i) = 4:6 = {4,5,6}. The way to avoid this trap is to use parantheses to force the order of evaluation you want: avg<-sum(exprdata[(3*i-2):(3*i,j)]/3) Example: i<-2 3*i-2:3*i # [1] 2 0 (3*i-2):(3*i) # [1] 4 5 6 The reason is that the ":" operator takes precedence over the binary operators "*", "+" and "-". Enter ?Syntax to get a listing of the various operators in order of precedence. Hoping this helps, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 Date: 04-Feb-08 Time: 08:18:05 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@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.