Hi I do not use any of mentioned libraries so I can not directly answer it. I would try to use debug(expr.frame) to see at what time the error is thrown.
I have no idea why did you obtain error. Try to evaluate code in peaces e.g. what is result of list(MAf=quote(SMA(Last, 20)), MAs=quote(SMA(Last, 50))) and look for differences between results got from spx data and nifty data. Regards Petr Raghu <r.raghura...@gmail.com> napsal dne 13.07.2010 13:17:42: > 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' ______________________________________________ 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.