You don't need a loop. If 'data' is a matrix of prices: re <- diff(log(data))
creates a matrix of returns. Patrick Burns [EMAIL PROTECTED] +44 (0)20 8525 0696 http://www.burns-stat.com (home of S Poetry and "A Guide for the Unwilling S User") Denver XU wrote: >hi,scionforbai, >Thank you very much. >I made very stupid mistake for the number is not stock price. >In fact, if the number is correct, data[i,1] is equivalent to data[i] > > > >2007/11/24, Scionforbai <[EMAIL PROTECTED]>: > > >>Hi Denver, >> >> >> >>>I want to calculate the return say AMR,so I use >>> >>> >>If data is a matrix or a data.frame you need to use the correct >>index: [row,col] instead of [row]. Try: >> >>re=numeric(10) >>for (i in 2:nrow(data)) { >> re[1]=0 >> re[i]=log(data[i,1]/data[i-1,1]) >>} >> >>This works, but of course you have negative values of the ratio, so >>the log cannot be computed. >>See also ?apply. >> >> >> > >______________________________________________ >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.