[R] non-consing count

Ista Zahn istazahn at gmail.com
Fri Jan 4 16:43:47 CET 2013


Hi Sam,

Here is one alternative, which is at least faster:

system.time(count.0 <- length(which(x == 0)))
system.time(count.1 <- sum(x == 0))
all.equal(count.0, count.1)

Best,
Ista

On Fri, Jan 4, 2013 at 10:30 AM, Sam Steingold <sds at gnu.org> wrote:
> Hi,
> to count vector elements with some property, the standard idiom seems to
> be length(which):
> --8<---------------cut here---------------start------------->8---
> x <- c(1,1,0,0,0)
> count.0 <- length(which(x == 0))
> --8<---------------cut here---------------end--------------->8---
> however, this approach allocates and discards 2 vectors: a logical
> vector of length=length(x) and an integer vector in which.
> is there a cheaper alternative?
> Thanks!
>
> --
> Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000
> http://www.childpsy.net/ http://iris.org.il http://honestreporting.com
> http://jihadwatch.org http://pmw.org.il http://www.PetitionOnline.com/tap12009/
> War doesn't determine who's right, just who's left.
>
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list