[R] indices of rows containing one or more elements >0

Henrik Bengtsson hb at stat.berkeley.edu
Wed Feb 13 04:30:05 CET 2008


X <- matrix(c(0,2,0,1,0,0,3,5), ncol=2)

Informative version:
isPositive <- (X > 0)
nbrOfPositives <- apply(isPositive, MARGIN=1, FUN=sum)
hasPositives <- (nbrOfPositives >= 1)
positiveRows <- which(hasPositives)

Compact version:
positiveRows <- which(rowSums(X > 0) >= 1)

If you have an extremely large number of rows and only a few columns,
you might for speed purposes want to use an algorithm that iterates
over columns instead, but I leave that as an exercise.

/Henrik

On Feb 12, 2008 6:40 PM, Ng Stanley <stanleyngkl at gmail.com> wrote:
> Hi,
>
> Given test <- matrix(c(0,2,0,1,3,5), 3,2)
>
> > test[test>0]
> [1] 2 1 3 5
>
> These are values >0
>
> > which(test>0)
> [1] 2 4 5 6
>
> These are array indices of those values >0
>
> > which(apply(test>0, 1, all))
> [1] 2
>
> This gives the row whose elements are all >0
>
> I can't seem to get indices of rows containing one or more elements >0
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> 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