Many many thanks to all of you. The beer cleared the air of doubts! Pls look at the following lines of code. This is taken from the example of tradesys documentation. When I run the given example using the data.frame spx it works just very fine but while I use some other data.frame (here nifty) it crashes. Now I can intuit that the total rows in the column named "Last" are 3637 and if i do a 20d MA and a 50d MA the respective rows for each of them are 3618 and 3588. Why does expr.frame crash for one data.frame and not for the other? I have given str() for both below for youe kind perusal.
library(tradesys) > library(TTR) > x=nifty[,c("Open","Last")] > d <- expr.frame(x, list(MAf=quote(SMA(Last, 20)), MAs=quote(SMA(Last, 50)))) Error in data.frame(c(1000, 1001.53, 987.17, 976.28, 960.32, 951.93, 949.29, : arguments imply differing number of rows: 3637, 3618, 3588 str(nifty) 'data.frame': 3637 obs. of 6 variables: $ Date..GMT.: Factor w/ 3637 levels "01/01/1996","01/01/1997",..: 321 687 807 929 1052 1172 1537 1650 1764 1886 ... $ Open : num 1000 1002 987 976 960 ... $ High : num 1000 1002 987 976 960 ... $ Low : num 1000 989 977 963 952 ... $ Last : num 1000 989 978 964 953 ... $ Date : num 321 687 807 929 1052 ... > str(spx) 'data.frame': 14940 obs. of 5 variables: $ Open : num 16.7 16.9 16.9 17 17.1 ... $ High : num 16.7 16.9 16.9 17 17.1 ... $ Low : num 16.7 16.9 16.9 17 17.1 ... $ Close : num 16.7 16.9 16.9 17 17.1 ... $ Volume: num 1260000 1890000 2550000 2010000 2520000 2160000 2630000 2970000 3330000 1460000 ... Thanks Raghu On Tue, Jul 13, 2010 at 12:01 PM, Petr PIKAL <petr.pi...@precheza.cz> wrote: > Hi > > r-help-boun...@r-project.org napsal dne 12.07.2010 16:09:30: > > > When I just run a for loop it works. But if I am going to run a for loop > > every time for large vectors I might as well use C or any other > language. > > The reason R is powerful is becasue it can handle large vectors without > each > > element being manipulated? Please let me know where I am wrong. > > > > for(i in 1:length(news1o)){ > > + if(news1o[i]>s2o[i]) > > + s[i]<-1 > > + else > > + s[i]<--1 > > + } > > Think in R not in C. Why using loops when you can use whole object > directly. It is like drinking beer from snifters. It is possible but using > pints is preferable and more convenient. > > news1o>s2o > > gives you a logical vector the same length > > and you can use it directly for further selection or computation. You can > consider FALSE as 0 and TRUE as 1 and use it as numeric vector > so > > x<-runif(10) > y<-runif(10) > > c(-1,1)[(x>y)+1] > > selects -1 when FALSE and 1 when TRUE. > > or you can use it in mathematical operation directly > > (x>y)*2-1 > > Regards > Petr > > > > > -- > > 'Raghu' > > > > [[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. > > -- 'Raghu' [[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.