Saltar al contenido

Vectores y factores en R

Estos son los objetos de datos más básicos de R. Puede distinguir un total de seis tipos atómicos y utilizarlos de la manera más eficiente según su situación actual.

Tipos atómicos: 1. Carácter 2. Lógico3. Entero4. Doble5. Complejo6. Crudo

Vectores y factores en R
Vectores y factores en R

Vamos a crear un pequeño guión para demostrar cada uno de estos.

123456print("bienvenido")print(3.14)print(100L)print(FALSE)print(10+3i)print(charToRaw("atomic raw"))

R

Al ejecutarlos se obtendrá el siguiente resultado.

123456[1]"bienvenido"[1]3.14[1]100[1] FALSO[1]10+3i[1]6174 6f 6d 696320726177

bash

La primera línea representa un vector de caracteres atómicos, que puede ser familiar para usted de otros lenguajes de programación como la cadena o la secuencia de caracteres. La segunda es el tipo atómico doble, y la tercera es el tipo atómico entero. La cuarta es el tipo atómico booleano, que puede ser VERDADERO o FALSO. El último utiliza la función charToRaw() para convertir nuestro tipo de carácter atómico en un tipo atómico crudo. La salida es en realidad la representación en bytes de la secuencia de caracteres.

Los vectores atómicos enteros y dobles permiten crear una secuencia, lo que puede hacerse de la siguiente manera.

Supongamos que necesitas una secuencia de valores dobles para una tarea. Si está bien con incrementos de 1, puede hacerlo de la siguiente manera.

12v <-0.3:10.3print(v)

R

La salida debería ser así.

10.31.32.33.34.35.36.37.38.39.310.3

bash

Si necesitas cambiar los incrementos a un valor personalizado, la función seq() está ahí para ayudarte.

12v <- seq(0,10,por =0.5)print(v)

R

La salida muestra un incremento de 0,5 en este caso.

 10.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.09.510.0

bash

Los vectores se comportan de forma muy similar a los conjuntos. Tienes la opción de acceder al subconjunto o al vector o tomar elementos por su índice. ¡Tengan en cuenta que el índice comienza en 1! Supongamos que tienes un vector atómico de caracteres que representan equipos informáticos, y necesitas agarrar los dos primeros. Puedes hacerlo de la siguiente manera.

123t <- c("Server", "Switch", "Router", "Firewall", "Monitor")u <- t[c(1,2)]print(u)

R

La salida debería ser como la siguiente.

1[1]"Servidor""Switch"

bash

También tiene la opción de acceder a elementos con indexación negativa. Este concepto funciona como en otros lenguajes de programación. Por ejemplo, obtener el elemento con el índice -2 significa que accediste al anterior al último elemento.

Si tienes vectores de la misma longitud, tienes la opción de manipularlos con los operadores de sumar, restar, multiplicar y dividir. Esto puede ser útil cuando se simulan o demuestran operaciones de matriz.

Supongamos que tienes dos vectores con tres valores y el tipo es doble.

12v2 <- c(1.1,2.2,3.3)v1 <- c(4.4,5.5,6.6)

R

Realice las siguientes operaciones en orden.

1234v1 + v2v1 - v2v1 * v2v1 / v2

R

Debería obtener el siguiente resultado.

1234[1]5.57.79.9[1]3.33.33.3[1]4.8412.1021.78[1]4.02.52.0

bash

Existe un concepto llamado reciclaje de vectores que entra en juego si se va a realizar una operación aritmética sobre dos vectores de longitudes diferentes. Los elementos del vector más corto se reciclan para que la operación se complete y dé resultados. Lo único que hay que tener en cuenta es que sólo funciona si el vector más largo es un múltiplo del vector más corto, de lo contrario fracasará.

Por ejemplo:

123v1 <- c(1,2,3,4,5,6)v2 <- c(7,8)v1 * v2

R

Salida:

1[1]71621323548

bash

Los elementos de contenido de la v2 serán considerados como 7,8,7,8,7,8.

Por último, pero no menos importante, cuando se trabaja con vectores, hay que recordar la función sort(). Toma un vector atómico y ordena los elementos en orden decreciente o creciente según la llamada de la función.

1234# orden creciente de clasificaciónv1;- orden(c(4,2,3,1,9,8,6))# orden decreciente de clasificaciónv1;- orden(c(4,2,3,1,9,8,6), decreciente = VERDADERO)

R

El argumento decreciente de la función de clasificación es FALSO por defecto.