Julia - Your subscript is out of range because in this loop:
for (t in aeven2){ Mhb0[,t] <- M[,(41+t)]-M[,(41-t)] Mhb1[,t] <- M[,(42+t)]-M[,(42-t)] } t takes the values from 2 to 40 by 2, and you've declared Mhb0 and Mhb1 as matrices with 20 columns.So when t reaches 22, there is no corresponding column in Mhb0 or Mhb1.
- Phil Spector Statistical Computing Facility Department of Statistics UC Berkeley spec...@stat.berkeley.edu On Wed, 13 Oct 2010, Julia Lira wrote:
Dear Eriki and all To run Quantile regression, it is necessary to install the following package in R: install.packages("quantreg") Then, write: library(quantreg) And the software will run. rm(list=ls()) #remove almost everything in the memory set.seed(180185) nsim <- 10 mresultx <- matrix(-99, nrow=1000, ncol=nsim) mresultb <- matrix(-99, nrow=1000, ncol=nsim) N <- 200 I <- 5 taus <- c(0.480:0.520) h <- c(1:20/1000) alpha1 <- c(1:82) aeven1 <- alpha1[2 * 1:41] aodd1 <- alpha1[-2 * 1:41] alpha2 <- c(1:40) aeven2 <- alpha2[2 * 1:20] #Create an object to hold results. M <- matrix(0, ncol=82, nrow=nsim) Mhb0 <- matrix(0, ncol=20, nrow=nsim) Mhb1 <- matrix(0, ncol=20, nrow=nsim) Mchb0 <- matrix(0, ncol=20, nrow=nsim) Mchb1 <- matrix(0, ncol=20, nrow=nsim) for (i in 1:nsim){ # make a matrix with 5 cols of N random uniform values u <- replicate( 5, runif(N, 0, 1) ) # fit matrix u in another matrix of 1 column mu <- matrix(u, nrow=1000, ncol=1) # make auction-specific covariate x <- runif(N, 0, 1) mx <- matrix(rep(x,5), nrow=1000, ncol=1) b0 <- matrix(rep(c(1),1000), nrow=1000, ncol=1) #function for private cost cost <- b0+b0*mx+mu #bidding strategy bid <- mx+((I+1)/I)+((I-1)/I)*mu mresultb[,i] <- bid mresultx[,i] <- mx qf <- rq(formula = mresultb[,i] ~ mresultx[,i], tau= 480:520/1000) # Storing result and does not overwrite prior values M[i, ] <- coef(qf) QI <- (1-0.5)/(I-1) M50b0 <- M[,41] M50b1 <- M[,42] Mb0 <- matrix(M[,aodd1], nrow=nsim, ncol=20) Mb1 <- matrix(M[,aeven1], nrow=nsim, ncol=20) for (t in aeven2){ Mhb0[,t] <- M[,(41+t)]-M[,(41-t)] Mhb1[,t] <- M[,(42+t)]-M[,(42-t)] } } Here, the matrix M stores the result for all quantiles (by column) considering each simulation i (by row). Then, I try to make some algebric simulations. I need to calculate Mhb0 such that for each value of t, the column called t in matrix Mhb0 will be the result of the subtraction of column (41-t) from the column (41+t) of the matrix M. To be more precise: for t = 2, 4, 6,... Mhb0 will be a matrix such that in the first column I will have {column (41+t) of M - column (41-t) of M} This should be the loop, and I would have 20 column for all the even number from 2 to 82 (specified in aeven2). Is that clear now? But the software says: "Error in Mhb0[, t] <- M[, (41 + t)] - M[, (41 - t)] : subscript out of bounds" What am I doing wrong? Thanks a lot! JuliaDate: Wed, 13 Oct 2010 13:53:28 -0500 From: er...@ccbr.umn.edu To: julia.l...@hotmail.co.uk CC: r-help@r-project.org Subject: Re: [R] loop Julia, Can you provide a reproducible example? Your code calls the 'rq' function which is not found on my system. Any paring down of the code to make it more readable would help us help you better, too. Julia Lira wrote:Dear all, I am trying to run a loop in my codes, but the software returns an error: "subscript out of bounds" I dont understand exactly why this is happenning. My codes are the following: rm(list=ls()) #remove almost everything in the memory set.seed(180185) nsim <- 10 mresultx <- matrix(-99, nrow=1000, ncol=nsim) mresultb <- matrix(-99, nrow=1000, ncol=nsim) N <- 200 I <- 5 taus <- c(0.480:0.520) h <- c(1:20/1000) codd <- c(1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81) ceven <- c(2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82) cevenl <- c(2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40) #Create an object to hold results. M <- matrix(0, ncol=82, nrow=nsim) Mhb0 <- matrix(0, ncol=20, nrow=nsim) Mhb1 <- matrix(0, ncol=20, nrow=nsim) Mchb0 <- matrix(0, ncol=20, nrow=nsim) Mchb1 <- matrix(0, ncol=20, nrow=nsim) for (i in 1:nsim){ # make a matrix with 5 cols of N random uniform values u <- replicate( 5, runif(N, 0, 1) ) # fit matrix u in another matrix of 1 column mu <- matrix(u, nrow=1000, ncol=1) # make auction-specific covariate x <- runif(N, 0, 1) mx <- matrix(rep(x,5), nrow=1000, ncol=1) b0 <- matrix(rep(c(1),1000), nrow=1000, ncol=1) #function for private cost cost <- b0+b0*mx+mu #bidding strategy bid <- mx+((I+1)/I)+((I-1)/I)*mu mresultb[,i] <- bid mresultx[,i] <- mx qf <- rq(formula = mresultb[,i] ~ mresultx[,i], tau= 480:520/1000) # Storing result and does not overwrite prior values M[i, ] <- coef(qf) QI <- (1-0.5)/(I-1) M50b0 <- M[,41] M50b1 <- M[,42] Mb0 <- matrix(M[,codd], nrow=nsim, ncol=20) Mb1 <- matrix(M[,ceven], nrow=nsim, ncol=20) for (t in cevenl){ Mhb0[ ,t] <- M[,(41+t)]-M[,(41-t)] Mhb1[ ,t] <- M[,(42+t)]-M[,(42-t)] } } Problem: the problem is in the red part of the loop. I want that the software takes the column (41+t) from the matrix called M and subtract from it the cloumn (41-t) of the same matrix M, such that the value of t varies according to the vector cevenl above. Why is this looping not working? Thanks in advance!!! Julia [[alternative HTML version deleted]] ______________________________________________ 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.[[alternative HTML version deleted]] ______________________________________________ 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.
______________________________________________ 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.