On 02-10-2012, at 16:20, Loukia Spineli <spinelilouki...@gmail.com> wrote:
> I want to make a multi-dimensional array. To be specific I want to make the > following array > > results<-array(0,dim=c(2,2,64,7)) > > This is the code I have created but it gives no result due to the error > "subscript out of bound". > > x<-rep(7,7) # Missingness in intervention > y<-rep(7,7) # Missingness in control > > arraynames<-list(Group=c("Success","Failure"),Outcome=c("Intervention","Control"),Trial=c("1":"7")) > mat.stat<-array(c(9,16,10,15,66,12,44,23,102,88,66,104,277,60,247,119,23,43,20,41,201,162,122, > 263,14,41,4,41),dim=c(2,2,7),dimnames=arraynames);mat.stat > > Nx<-rep(0,length(x)) > Ny<-rep(0,length(y)) > n<-(x+1)*(y+1) > results<-array(0,dim=c(2,2,64,7)) > l<-1 > for(i in 1:length(x)){ > Nx[i] <- length(1:(x[i]+1)) > Ny[i] <- length(1:(y[i]+1)) > for(j in 1:(Nx[i])){ > for(k in 1:(Ny[i])){ > results[,,l,i]<-mat.stat[,,i]+matrix(c(c(0:x[i])[j],c(0:y[i])[k],-c(0:x[i])[j], > -c(0:y[i])[k]),nrow=2,ncol=2,byrow=T) > l<-l+1 > } > } > } > results If you had inserted this line cat("i=",i,"l=",l,"j=",j,"k=",k,"\n") before the assignment to results[,,l,i] in the inner loop you could have quite easily seen what the problem is. The counter l (letter el) keeps on increasing in your code and when it reaches 65 R will complain. So at an appropriate place in the code you need to reset l to 1. I suggest you move the assignment l<-1 to just before the line with for( j in 1:Nx[i]) ... Whether the results are what you desire is up to you to decide. Please use some more whitespace and do some indenting in your code. As presented it is unreadable. Berend ______________________________________________ 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.