You might want to understand loops a little more; you are modifying 'j' within the loop which does not do whatever you think it should be doing. You also probably want "B" to be a matrix if you want to store the results for everything besides the last iteration.
Here is your loop corrected and followed by a vectorized way of doing it without loops: > ONS <- data.frame(replicate(7, 1:10)) > > n = length(ONS) > Y = NULL > > B = matrix(nrow=nrow(ONS) - 1, ncol=length(ONS)) > > > for (i in 1 : n) + { + Y[i] = ONS[i] + + #-- j <- 1 Removed -- not needed. why is it here? + for (j in 1:(length(Y[[i]])-1)) + { + B[j, i] <- log((Y[[i]][j+1])/(Y[[i]][j])) + + + #-- j <- j+1 Remove -- why is it here? + + + } + + } > B # print B [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 [2,] 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 [3,] 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 [4,] 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 [5,] 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 [6,] 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 [7,] 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 [8,] 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 [9,] 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 > > # now using 'vectorized' operations; should have same values > sapply(ONS, function(.col){ + log(tail(.col, -1) / head(.col, -1)) + }) X1 X2 X3 X4 X5 X6 X7 [1,] 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 0.6931472 [2,] 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 0.4054651 [3,] 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 0.2876821 [4,] 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 0.2231436 [5,] 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 0.1823216 [6,] 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 0.1541507 [7,] 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 0.1335314 [8,] 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 0.1177830 [9,] 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 0.1053605 > > On Mon, Feb 15, 2010 at 7:41 AM, Madhavi Bhave <madhavi_bh...@yahoo.com> wrote: > Dear Sir, > > Thanks a lot for your quick solution. But still I will like someone to guide > me the solution as per my requirement. The problem is actually I am not > looking for the square of each term. I have used it to give some example > since I didn't want to confuse the matter. My process is altogether different > and I need to use loop. So here is my actual code. I am trying to use > Historical simulation and for that I need to calculate LN(New rate / old rate > for each of the instrument separately). > > Here is my actual code - > > ONS = read.csv('Instrument.csv') > n = length(ONS) > Y = NULL > B = array() > > for (i in 1 : n) > { > Y[i] = ONS[i] > j <- 1 > for (j in 1:(length(Y[[i]])-1)) > { > B[j] <- log((Y[[i]][j+1])/(Y[[i]][j])) > > > j <- j+1 > > > } > > } > > > > > --- On Mon, 15/2/10, Benilton Carvalho <beniltoncarva...@gmail.com> wrote: > > > From: Benilton Carvalho <beniltoncarva...@gmail.com> > Subject: Re: [R] CORRECTION - Storing results in a loop > To: "Madhavi Bhave" <madhavi_bh...@yahoo.com> > Cc: r-help@r-project.org > Date: Monday, 15 February, 2010, 4:29 AM > > > sorry, meant to type: > > B = ONS^2 > > cheers, > benilton > > On Mon, Feb 15, 2010 at 12:28 PM, Benilton Carvalho > <beniltoncarva...@gmail.com> wrote: >> maybe you just want >> >> Y = ONS^2 >> >> ? >> >> b >> >> On Mon, Feb 15, 2010 at 12:22 PM, Madhavi Bhave <madhavi_bh...@yahoo.com> >> wrote: >>> Dear R Helpers >>> >>> (There is a small correction in my earlier mail. In the 'instrument.csv' >>> file, I had mentioned only three columns. Actually there are 7 columns. I >>> regret the error. Rest contents remains the same. Thanks) >>> >>> I have an 'instrument.csv' file with 7 instrument names and 5 rates each >>> i.e. it has 7 columns and 6 rows (including row names). >>> >>> 'instrument.csv' >>> >>> instrument1 instrument2 ........ instrument7 >>> 12 5 14 >>> 11 7 7 >>> 14 11 3 >>> 8 21 10 >>> 11 3 5 >>> >>> >>> Following is my R code. >>> >>> ONS = read.csv('Instrument.csv') >>> n = length(ONS) >>> >>> Y = NULL >>> B = NULL >>> >>> for (i in 1 : n) >>> >>> { >>> >>> Y[i] = ONS[i] >>> >>> for (j in 1 : length(Y[[i]])) >>> { >>> B[j] = (Y[[i]][j])^2 >>> } >>> >>> } >>> >>> Problem is when I type B, I get the processed result only for the last >>> column i.e. Y[7]. It doesn't store results for Y[1] to Y[7]. >>> >>> I need B[1], B[2].......upto B[7]. >>> >>> Please guide me how do I store individual column processed results? >>> >>> Thanking you all in advance >>> >>> Regards >>> >>> Madhavi >>> >>> >>> >>> >>> The INTERNET now has a personality. YOURS! See your Yahoo! Homepage. >>> [[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. >>> >>> >> > > > > Your Mail works best with the New Yahoo Optimized IE8. Get it NOW! > http://downloads.yahoo.com/in/internetexplorer/ > [[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. > > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.