# [R] Remove a complete row as per the Range in a Matrix

David Winsemius dwinsemius at comcast.net
Tue Jul 31 18:24:09 CEST 2012

```On Jul 31, 2012, at 1:31 AM, Rui Barradas wrote:

> Hello,
>
> Please learn how to use dput(), it's not your first post.
> And try the following.
>
>

I think the data.matrix transformation is a bad idea. It forces the
numeric values to be character and the collation sequence is driven
off the first letter, so "19" is less than "9", and "1010" is less
than "2"
> Name            Age
> ANTONY        27
> IMRAN           30
> RAJ                   22
> NAHAS           32
> GEO                 42
>

Why not just:

ANTONY        27
IMRAN           30
RAJ                   22
NAHAS           32
GEO                 42

MinMax <- c(MIN = 25,MAX=35)
# using a named vector rather than a two column dataframe

> myDF[ myDF\$Age > MinMax["MIN"] & myDF\$Age < MinMax["MAX"] , ]
Name Age
1 ANTONY  27
2  IMRAN  30
4  NAHAS  32

--
David.

> MinMaxArray  <- data.frame(MIN = 25,MAX=35)
>
> inx <- MinMaxArray[[ "MIN" ]] <= myMatrix[, "Age"] & myMatrix[,
> "Age"] <= MinMaxArray[[ "MAX" ]]
> myMatrix[ inx , ]
>
> Hope this helps,
>
> Em 31-07-2012 08:58, Rantony escreveu:
>> Hi,
>>
>> Here i have a Matrix
>>
>> MyMatrix <-
>>
>> Name            Age
>> ---------           -------
>> ANTONY        27
>> IMRAN           30
>> RAJ                   22
>> NAHAS           32
>> GEO                 42
>>
>> and here i have an array with Minimum and Maximum values.
>> MinMaxArray  <- data.frame(MIN = 25,MAX=35)
>> MIN     MAX
>> ------     --------
>> 25           35
>> ------------------------------------------------------
>> Now what is, i need to get a matrix by removing the rows which is
>> NOT coming
>> the "Age"-column in between the MIN and MAX value.  Is it possible
>> to avoid
>> "for-loop", bcz its a huge matrix.
>>
>> so, final matrix looks like this,
>>
>> Name            Age
>> ---------           -------
>> ANTONY        27
>> IMRAN           30
>> NAHAS           32
>>
>>