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 Any suggestion would be really welcome! Thank you very much! Loukia [[alternative HTML version deleted]]
On 02-10-2012, at 16:20, Loukia Spineli <spineliloukia26 at 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 > } > } > } > resultsIf 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
Hello, See if this is it. 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 # <--------------------------- This changed place for(i in 1:length(x)){ Nx[i] <- length(1:(x[i]+1)) Ny[i] <- length(1:(y[i]+1)) l <- 1 # <----------------------- To here for(j in 1:(Nx[i])){ for(k in 1:(Ny[i])){ Hope this helps, Rui Barradas Em 02-10-2012 15:20, Loukia Spineli escreveu:> 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 > > Any suggestion would be really welcome! > Thank you very much! > > Loukia > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.