CAPÍTULO 3. ACCESO A PORCIONES O SUBCONJUNTOS DE DATOS 52
Para factores solo la operaciones lógicas para probar la igualdad o desigual-
dad tienen significado:
Fmes.nacimiento
==
"Mar"
# igualdad
## [1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## [10] FALSE FALSE
Fmes.nacimiento
!=
"Mar"
# desigualdad
## [1] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
## [10] TRUE TRUE
No obstante, dado que, como se ha señalado en la sección 2.4.1, los factores
tienen implícito un vector de enteros, que indexan el orden establecido por
los
Levels
(niveles) del factor, se puede usar ese hecho para descubrir, en el
caso de ejemplo, cuáles son los meses menores o iguales que
“Abr”
(número de
orden 4, en
Levels
), de la siguiente manera:
# El factor convertido a enteros:
as.integer
(Fmes.nacimiento)
## [1] 12 2 10 3 2 11 4 12 2 10 12
# El vector de logicos:
as.integer
(Fmes.nacimiento)
<=
4
## [1] FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE
## [10] FALSE FALSE
# .. y usado como indice:
Fmes.nacimiento[
as.integer
(Fmes.nacimiento)
<=
4
]
## [1] Feb Mar Feb Abr Feb
## 12 Levels: Ene Feb Mar Abr May Jun Jul Ago Sep Oct ... Dic
Una nota importante es que los operadores de selección no solamente se
usan para consultar los valores, sino que también se pueden emplear para cam-
biar los valores de los elementos seleccionados mediante el operador. Así por
ejemplo, podríamos cambiar cada uno los elementos negativos del vector
v
, a
su correspondiente positivo, mediante la siguiente asignación:
v[v
<
0
]
<-
-
v[v
<
0
]
# .. y el vector v ahora es:
v
## [1] 0.9681 0.8507 1.7280 1.3120 1.2744 0.9908 1.1659 0.2992