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.

Reply via email to