[R] Selecting from a character vector with logical operators

Spencer Graves spencer.graves at pdf.com
Wed Oct 20 18:07:54 CEST 2004

```      One can, of course, convert the factor to character as:

> letfac <- factor(letters)
> letfac[as.character(letfac)>"j"]
[1] k l m n o p q r s t u v w x y z
Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z

Alternatively, one can select from the levels:

> letfac[levels(letfac)[letfac]>"j"]
[1] k l m n o p q r s t u v w x y z
Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
>
hope this helps.  spencer graves

Gavin Simpson wrote:

> Chuck Cleland wrote:
>
>>   With a character vector it works fine, but your ca11c93SOL1\$RECTAN
>> seems to be a factor.
>>
>>  > letters[letters > "j"]
>>  [1] "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
>>
>>  > letfact <- as.factor(letters)
>>  > letfact[letfact > "j"]
>>  [1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
>> <NA> <NA>
>> [16] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
>> Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
>> Warning message:
>> ">" not meaningful for factors in: Ops.factor(letfact, "j")
>
>
> You need an ordered factor for this to work:
>
> > letfact <- as.ordered(letters)
> > letfact[letfact > "j"]
>  [1] k l m n o p q r s t u v w x y z
> 26 Levels: a < b < c < d < e < f < g < h < i < j < k < l < m < n < o <
> ... < z
>
> Gav
>

--
Spencer Graves, PhD, Senior Development Engineer
O:  (408)938-4420;  mobile:  (408)655-4567

```