thankyou Berend.....
regards
eliza
 

> Subject: Re: [R] extracting column and regular interval in R
> From: b...@xs4all.nl
> Date: Tue, 18 Sep 2012 17:43:15 +0200
> CC: r-help@r-project.org
> To: eliza_bo...@hotmail.com
> 
> 
> On 18-09-2012, at 16:55, eliza botto wrote:
> 
> > 
> > Dear R users,
> > i have a matrix with 31 rows and 444 columns and i want to extract every 
> > 37th column of that matrix starting from 1. more precisely i want to select 
> > columns 1, 38,75, 112 and so on. then doing the same by starting from 
> > column number 2(2,39,76,113.......).
> > i know that there is a manual way of doing it but i wanted to make it more 
> > quickly as i have fairly large data to dealth with.
> > 
> 
> Indexing with 
> 
> c(1,seq_len((length(x)-1)/M)*M+1)
> 
> is also an option.
> It appears to be faster than Michael's method.
> 
> N <- 444
> a <- 1:N
> 
> f1 <- function(x,M) {
> x[c(TRUE,rep(FALSE,M-1))]
> }
> 
> f2 <- function(x,M) {
> x[c(1,seq_len((length(x)-1)/M)*M+1)]
> }
> 
> M <- 37 
> M
> z1 <- f1(a,M)
> z2 <- f2(a,M)
> 
> > identical(z1,z2)
> [1] TRUE
> 
> 
> Nrep <- 100000
> 
> library(rbenchmark)
> benchmark(f1(a,M), f2(a,M), replications=Nrep)
> 
> > benchmark(f1(a,M), f2(a,M), replications=Nrep)
> test replications elapsed relative user.self sys.self user.child
> 1 f1(a, M) 100000 1.395 1.437 1.367 0.027 0
> 2 f2(a, M) 100000 0.971 1.000 0.959 0.011 0
> 
> For N <- 4440 the timings are
> 
> > benchmark(f1(a,M), f2(a,M), replications=Nrep)
> test replications elapsed relative user.self sys.self user.child
> 1 f1(a, M) 100000 4.636 2.483 4.569 0.065 0
> 2 f2(a, M) 100000 1.867 1.000 1.714 0.153 0
> 
> 
> Berend
> 
> 
> 
> 
                                          
        [[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