lunes, 16 de julio de 2018

Selección de elementos de un vector en R

Ya hemos visto que podemos usar los corchetes [] para obtener uno o varios elementos de un vector. Ahora vamos a conseguir selecciones más interesantes e incluso introduciremos filtros.



Operadores lógicos


<  menor que
>  mayor que
<= menor o igual que
>= mayor o igual que
== igual (comparación)
!= distinto (no igual)


a <- 5
a>4                   # TRUE  
a <- c(1,2,3,4,5)
a<=2                  # TRUE  TRUE FALSE FALSE FALSE
#Creamos el vector b
b <- a>=3
b                     # FALSE FALSE  TRUE  TRUE  TRUE
a*b                   # 0 0 3 4 5
a==b                  # FALSE FALSE FALSE FALSE FALSE
a!=b                  # TRUE TRUE TRUE TRUE TRUE



Selección de elementos de un vector

Observe que en el código siguiente la expresión beneficio[gano] nos permite seleccionar parte de un vector gracias a que en los corchetes [] hemos añadido un filtro o selección. Este filtro no es como hemos visto anteriormente indicando que elementos concretos queremos sino que se realiza introduciendo un vector denominado gano donde todos sus elementos son condiciones lógicas TRUE o FALSE. Esto actúa de filtro y nos devuelve únicamente lo elementos que cumplen ser verdaderos TRUE.


#Asignamos los días de la semana a un vector
dias <- c('Lun','Mar','Mie','Jue','Vie')
#Creamos un vector de perdidas y ganancias
beneficio <- c(-19,-86,125,-343,71)
#Nombramos el vector
names(beneficio) <- dias
beneficio #Imprimimos el vector ya nombrado
gano <- beneficio>0             #Creamos el vector gano con cinco booleanos
print('Vector gano:')
gano
#Creamos un vector solo con los resultados positivos
ganancias <- beneficio[gano] 
print('Estas son las ganancias: ')
ganancias



Operar con valores lógicos

Podemos asignar booleanos a variables o a vectores. Veamos algunas operaciones que se pueden realizar con valores lógicos.


#Asignamos un valor booleano a una variable
a <- TRUE
b <- FALSE
a            #Imprimimos a
b            #Imprimimos b
a*b  # 1*0=0
a*!b # 1*1=1
#Creamos los vectores v y w
v <- c(1,3,5,7,9)
w <- c(100,200,300,400,500)
#Imprimimos v, w y su suma
v
w
v+w
a & b         # AND
a | a         # OR


domingo, 15 de julio de 2018

Trabajar con vectores en R

El lenguaje de programación R está orientado al cálculo científico y en especial a la estadística por lo que el manejo de vectores se encuentra muy desarrollado.

Creación de vectores

Podemos crear vectores con datos numéricos, string o booleanos pero sin mezclar tipos. Si mezclamos se convierten todos a string.

# Asignamos valores al vector v
v <- c(1,-3,5,7,9.5)
w <- c(100,200,300,400,500)
# Imprimimos v, w
v
w
# Los vectores pueden contener strings
character_vector <- c("a", "b", "c")
character_vector
# Los vectores pueden contener valores lógicos
boolean_vector <- c(TRUE, FALSE, TRUE)
boolean_vector


Nombrar vectores

En algunos casos puede ser necesario dar un nombre a los valores de un vector.


#Vector de pérdidas y ganancias diarias de una semana
pg <- c(170, -20, 50, -160, 290)
#Imprimimos el vector pg aún sin ser nombrado
pg
#Asignamos días como nombres del vector pg
names(pg) <- c("Lun", "Mar", "Mie", "Jue", "Vie")
# Imprimimos el vector después de ser nombrado
pg
#Podemos asignar los días de la semana a un vector
dias <- c('Lun','Mar','Mie','Jue','Vie')
dias
#Creamos otro vector de perdidas y ganancias
beneficio <- c(-19,-86,125,-343,71)
#Nombramos el vector
names(beneficio) <- dias
beneficio #Imprimimos el vector ya nombrado

Sumar vectores

La suma de vectores da como resultado otro vector que es suma de los elementos de ambos vectores. Por el contrario si utilizamos la función sum() sobre un vector el resultado será la suma de todos los elementos de ese vector.

a <- c(1, 3, 4) 
b <- c(2, 2, 3)
c <- a + b       #El vector c es suma de los vectores a y b
a                #Imprimimos a
b                #Imprimimos b
c                #Imprimimos c
#Elevamos los elementos de a usando como potencias los de b
#El resultado no se asigna a ninguna variable simplemente se imprime
a^b
#Suma de todos los elementos de un vector
sum(c)
#Comprobamos que la suma de todos los elementos de c es igual a los de a y b juntos
sum(c)==sum(a+b)


Elementos de un vector

Podemos trabajar con elementos individuales o conjuntos de elementos de un vector usando los corchetes [].


beneficio <- c(-19,-86,125,-343,71)
print('Imprimimos el vector sin nombrar')
beneficio
print('Imprimimos el segundo elemento del vector')
beneficio[2]
dias <- c('Lun','Mar','Mie','Jue','Vie')
#Nombramos el vector
names(beneficio) <- dias
print('Ahora al imprimir el 2º elemento del vector se verá el nombre')
beneficio[2]
print('Imprimimos el valor del viernes')
beneficio['Vie']
print('Imprimimos el valor del miércoles y del viernes')
beneficio[c('Mie','Vie')]
print('Veamos los tres elementos centrales')
beneficio[c(2, 3, 4)]
print('Días centrales entre 2 y 4')
centrales <- beneficio[2:4]
centrales
#cat imprime dos elementos separados por coma
#mean calcula la media de los elementos de un vector
cat('La media de los días centrales es',mean(centrales))