El arte de programar en R Un leguaje para la estadística - page 61

CAPÍTULO 3. ACCESO A PORCIONES O SUBCONJUNTOS DE DATOS 58
Ahora, supóngase que se quiere obtener ese mismo renglón, pero basado en
el hecho de que el valor en la columna 2 es 16. Esto es: obtener el renglón, o ren-
glones, cuyo valor en la columna 2 es 16. Primeramente, obsérvese que todos
los valores en la columna 2 de la matriz o del
data frame
, se pueden comparar
contra el valor 16, de la siguientes maneras:
mt[,
2
]
==
16
## [1] FALSE TRUE FALSE FALSE
df.mt[,
2
]
==
16
## [1] FALSE TRUE FALSE FALSE
Como se puede ver el resultado es un vector de lógicos, cada uno de los
cuales corresponde a la comparación por igualdad de cada uno de los elemen-
tos en la columna dos contra el valor 16; esto es, en
cada uno de los renglones
de esa columna. Esta comparación se puede utilizar como índice en el espacio
correspondiente a los renglones en el operador
[]
, para obtener los renglones
que cumplen con la condición establecida. En este caso el arreglo de lógicos re-
sultante de la condición actúa como una máscara o un filtro que sólo deja
pasar
,
del la matriz, aquellos elementos para los cuales hay un valor
TRUE
, como se
muestra a continuación:
# Se usan paréntesis, (), para enfatizar la condición, aunque
# se podría prescindir de ellos:
mt[(mt[,
2
]
==
16
), ]
## [1] 12 16 20 24 28
df.mt[(df.mt[,
2
]
==
16
), ]
## UNO DOS TRES CUATRO CINCO
## dos 12 16 20 24 28
# En el caso de la matriz, si se quiere obtener como salida
# una matriz (de un solo renglón), se hace así:
mt[(mt[,
2
]
==
16
), ,
drop
=
FALSE
]
##
[,1] [,2] [,3] [,4] [,5]
## [1,] 12 16 20 24 28
Modifiquemos ahora la matriz y el
data frame
, para tener más de un renglón
que cumple con esta condición:
mt[
4
,
2
]
<-
16L
df.mt[
4
,
2
]
<-
16L
mt
# (El data frame es semejante)
1...,51,52,53,54,55,56,57,58,59,60 62,63,64,65,66,67,68,69,70,71,...198
Powered by FlippingBook