Gents:

The "eval(parse(...))" construction should almost always be avoided: it is
basically a misuse of R. There are exceptions, I suppose, but this does not
appear to be one of them.

Note that the use of numeric indexing does appear to be slightly faster
than logical indexing here, although I would say not enough to make a
practical difference. In any case:

A <- mat1New ## saves me a bit of editing
>
  > system.time({
    +     j40<- n*seq_len(nrow(A)/n)
    +     vec1<- rep("j40",n)
    +     res<- eval(parse(text=
paste(paste0("A","[",paste0(vec1,"-",seq(n)-1),",]"),collapse="*")
                           +     ))
    + })
user  system elapsed
0.02    0.00    0.01

> system.time({
  +     j <- seq_len(nrow(A))%%n
  +     b <- A[j==0,]
  +     for(i in seq_len(n-1))b <- b*A[j==i,]
  + })
user  system elapsed
0.25    0.00    0.27


  > system.time({
    +     j <- n*seq_len(nrow(A)/n)
    +     b1 <- A[j,]
    +     for(i in seq_len(n-1))b1 <- b1*A[j-i,]
    + })
user  system elapsed
0.01    0.00    0.02

## One should not invest too much faith in such superficial timing tests,
however.

I will have no further comments.


Cheers,
Bert

        [[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