Vectores

Comando concatenar y operaciones con vectores.
c
numeric
sqrt
abs
sqrt
exp
log
length
sum
prod
mean
var
seq
Author

Román Salmerón Gómez

Published

November 28, 2022

Hay distintas formas de introducir datos. La más sencilla es mediante vectores usando el comando c de concatenar:

x = c(5, 6.7, 4, 7, -2, -3.4, -5) # ¡ojo! el delimitador decimal es el punto
x
[1]  5.0  6.7  4.0  7.0 -2.0 -3.4 -5.0

Para hacer referencia a un elemento o elementos concretos del vector usamos los corchetes:

x[2] # elemento 2 de 'x'
[1] 6.7
x[c(3,5)] # elementos 3 y 5 de 'x'
[1]  4 -2

Si inicialmente no conozco el tamaño del vector, lo puedo crear mediante el comando numeric:

y = numeric() # creo un objeto llamado 'y' que es numérico y tiene un tamaño cualquiera
y[2] = 3
y # NA significa no disponible 'Not Abailable'
[1] NA  3

Algunas operaciones con un único vector son:

1/x # ¡¡¡ATENCIÓN A CÓMO SE HACEN LAS OPERACIONES!!!
[1]  0.2000000  0.1492537  0.2500000  0.1428571 -0.5000000 -0.2941176 -0.2000000
2*x - 9
[1]   1.0   4.4  -1.0   5.0 -13.0 -15.8 -19.0
sqrt(x) # raíz cuadrada, NaN significa que no es un número, 'Not a Number'
Warning in sqrt(x): Se han producido NaNs
[1] 2.236068 2.588436 2.000000 2.645751      NaN      NaN      NaN
abs(x) # valor abxoluto
[1] 5.0 6.7 4.0 7.0 2.0 3.4 5.0
sqrt(abs(x)) # raíz cuadrada
[1] 2.236068 2.588436 2.000000 2.645751 1.414214 1.843909 2.236068
x^2 # potencia de orden 2
[1] 25.00 44.89 16.00 49.00  4.00 11.56 25.00
exp(x) # exponencial
[1] 1.484132e+02 8.124058e+02 5.459815e+01 1.096633e+03 1.353353e-01
[6] 3.337327e-02 6.737947e-03
log(abs(x)) # logaritmo
[1] 1.6094379 1.9021075 1.3862944 1.9459101 0.6931472 1.2237754 1.6094379
length(x) # número de elementos del vector
[1] 7
sum(x) # suma de los elementos del vector
[1] 12.3
prod(x) # producto de los elementos del vector
[1] -31892
mean(x) # media aritmética del vector
[1] 1.757143
sum(x)/length(x) 
[1] 1.757143
var(x) # cuasi-varianza del vector
[1] 25.63952
sum((x-mean(x))^2)/(length(x)-1)
[1] 25.63952
((length(x)-1)/length(x))*var(x) # varianza del vector
[1] 21.97673
sum((x-mean(x))^2)/length(x)
[1] 21.97673

Como ha quedado de manifiesto, los comandos se aplican elemento a elemento.

Algunas operaciones con dos vectores son:

y = 1:length(x) # otras opciones de generar vectores
y
[1] 1 2 3 4 5 6 7
z = rep(1, length(x)) # repite el '1' tantas veces como el valor de 'length(x)'
z
[1] 1 1 1 1 1 1 1
x*y # multiplicamos elemento a elemento
[1]   5.0  13.4  12.0  28.0 -10.0 -20.4 -35.0
x*z
[1]  5.0  6.7  4.0  7.0 -2.0 -3.4 -5.0
y*z
[1] 1 2 3 4 5 6 7
x%*%y # producto de vectores
     [,1]
[1,]   -7
crossprod(x,y)
     [,1]
[1,]   -7
y%*%t(z) # vector por otro vector traspuesto
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    1    1    1    1    1    1
[2,]    2    2    2    2    2    2    2
[3,]    3    3    3    3    3    3    3
[4,]    4    4    4    4    4    4    4
[5,]    5    5    5    5    5    5    5
[6,]    6    6    6    6    6    6    6
[7,]    7    7    7    7    7    7    7
tcrossprod(y,z)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    1    1    1    1    1    1
[2,]    2    2    2    2    2    2    2
[3,]    3    3    3    3    3    3    3
[4,]    4    4    4    4    4    4    4
[5,]    5    5    5    5    5    5    5
[6,]    6    6    6    6    6    6    6
[7,]    7    7    7    7    7    7    7
w = seq(1,length(x)+1) # más opciones de generar vectores
w
[1] 1 2 3 4 5 6 7 8
z*w # no coinciden las dimensiones, no se puede hacer la operación
Warning in z * w: longitud de objeto mayor no es múltiplo de la longitud de uno
menor
[1] 1 2 3 4 5 6 7 8
w = seq(1,length(x),2)
w # machaca el anterior valor de 'w'
[1] 1 3 5 7
w = seq(1,length(x),0.1)
w # machaca el anterior valor de 'w'
 [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8
[20] 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7
[39] 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6
[58] 6.7 6.8 6.9 7.0

Uso de operadores lógicos, muy útiles en estructuras condicionales como if o while:

x > 6 # valores lógicos: mayor '>', menor '<'
[1] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
y <= 3 # valores lógicos: mayor o igual '>=', menor o igual '<='
[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
x == y # valores lógicos: igualdad
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[2] = y[2] # asigno al segundo valor de 'x' el segundo valor de 'y'
x != y # valores lógicos: distinto
[1]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
x
[1]  5.0  2.0  4.0  7.0 -2.0 -3.4 -5.0
y >= 3
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
x[y>=3] # proporciona los valores de 'x' en cuyas posiciones 'y>=3' es TRUE
[1]  4.0  7.0 -2.0 -3.4 -5.0
x[(y>=3) & (y==1)] # proporciona los valores de 'x' en cuyas posiciones 'y>=3' y 'y==1' son TRUE (no se cumple nunca)
numeric(0)
x[(y>=3) | (y==1)] # proporciona los valores de 'x' en cuyas posiciones 'y>=3' o 'y==1' son TRUE
[1]  5.0  4.0  7.0 -2.0 -3.4 -5.0