Subconjuntos de un vector
Por diversos motivos, es posible y frecuente que necesitemos trabajar con un subconjuntos de los datos que contiene un vector; para ello necesitamos procedimientos que nos permitan acceder a esos datos. En las dos entradas anteriores ya nos encontramos con situaciones en las que esta temática estaba presente, pero no de forma explícita, por lo que necesitamos abordarla en la actual.
De las diferentes opciones disponibles para la obtención de subconjuntos, el uso de índices es el único que podemos emplear con los vectores, y con ciertas restricciones, como tendremos ocasión de ver aquí.
El índice es un numeral que indica la posición de cada elemento en la colección de datos (en este caso, en el vector) (1), de modo que es posible acceder a cada uno de sus datos empleando el índice (num[1]), u omitirlo también usando el índice como identificador (num[-1]) (2), como tuvimos ocasión de comprobar en una [anterior ocasión].
En realidad poco vamos a añadir en esta entrada a lo ya visto, pero sí interesa tratar el tema de forma específica por la funcionalidad que presenta para el tratamiento de datos.
Supongamos que tenemos un vector con los identificadores de los cursos de E. Primaria (curso<-c("P1","P2","P3","P4","P5","P6")) a partir del cual deseamos crear varios vectores derivados:
- Un vector con el curso P3 -> curso3 <- curso[3] devuelve "P3"
- Otro con los tres primeros cursos -> curso13 <- curso[1:3] devuelve "P1" "P2" "P3"
- Otro con los cursos impares -> cursosimp <- curso[c(1,3,5)]) devuelve "P1" "P3" "P5"
- Y otro sin los dos cursos finales -> curosinic <- curso[-c(5,6)] devuelve "P1" "P2" "P3" "P4"
Como puedes ver, para obtener un elemento o varios consecutivos empleamos la fórmula vector[Indice/s], estableciendo un intervalo en caso de desear recuperar ese intervalo de elementos, pero cuando deseamos obtener un sub-vector formado por elementos no consecutivos debemos emplear la función c() enmarcada dentro de la estructura básica (vector[c(indices)]); sólo así es posible utilizar la separación de índices mediante coma, que es la forma de hacer referencia a cada índice individual) (3)
Salvo por esta limitación interpretativa, el modo de obtener subconjunto del conjunto vector mediante índices es muy simple, lo que nos permite generar con facilidad subconjuntos de datos a partir del contenido del vector.
NOTAS
(1) Recuerda que en R el índice no se inicia en 0, sino en 1. En num <- c("casa","mesa"), el elemento 1 (índice 1) es "casa". En OOo Basic "casa" ocuparía la posición (índice) 0.
(2) La diferencia entre ambas instrucciones es que la primera nos devuelve el dato ubicado en la posición que concreta el índice, mientras que la segunda devuelve todos los datos contenidos en el vector menos el indicado por su índice (en este caso el que ocupa la posición 1)
(3) Si empleáramos la separación de índices mediante coma pero son la función c(), R nos devolvería error, ya que interpreta que estamos solicitando datos de una estructura n-dimensional, y un vector sólo tiene una dimensión (longitud). El signo - es substractivo, de ahí que al anteponerlo a la función c() (-c(5,6)) obtengamos como resultado los elementos del vector menos los indicados como argumentos de dicha función.
No hay comentarios:
Publicar un comentario
Comenta esta entrada