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.