[R] how to get the rows that satisfy a specific condition
Sven E. Templer
sven.templer at gmail.com
Sun Sep 28 13:51:42 CEST 2014
in ?which read about arr.ind
following jims assumption (column instead of row indices is what you
want) this also works:
m <- matrix(1:20,4)
unique(which(m>11, arr.ind = T)[,"col"])
On 27 September 2014 12:23, Jim Lemon <jim at bitwrit.com.au> wrote:
> On Fri, 26 Sep 2014 10:15:14 PM Fix Ace wrote:
>> Hello, there,
>> I wonder if there is an easier way that I would only get the rows that
>> satisfies some condition. For example:I have the following matrix, and I
>> would like to output only the 3rd row and 4th row, since only these two
>> rows contain the numbers greater than 11
>> > a
>>
>> [,1] [,2] [,3] [,4] [,5]
>> [1,] 1 5 9 13 17
>> [2,] 2 6 10 14 18
>> [3,] 3 7 11 15 19
>> [4,] 4 8 12 16 20
>>
>> > a>11
>>
>> [,1] [,2] [,3] [,4] [,5]
>> [1,] FALSE FALSE FALSE TRUE TRUE
>> [2,] FALSE FALSE FALSE TRUE TRUE
>> [3,] FALSE FALSE FALSE TRUE TRUE
>> [4,] FALSE FALSE TRUE TRUE TRUE
>> I have tried to use a[a>11, ] and it did not work.
>> Thanks a lot for the help:)
>
> Hi Fix Ace,
> I have to admit that I am unfamiliar with the system of arithmetic that
> you are employing in the above example. In no system with which I am
> conversant are 13, 17, 14 and 18 less than or equal to 11. I can only
> offer the desperate conjecture that you want the third to fifth columns of
> the matrix rather than the third and fourth rows. If this wild surmise
> happens to be the case, I suggest that you try this:
>
> testmat[,apply(testmat,2,function(x) return(max(x) > 11))]
>
> Jim
>
> ______________________________________________
> 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