Protocolo:
Lenguaje utilizado: R
Tema: Variables en R (creación, asignación de valores, modificación, eliminación de variables) y tipos de operadores en R
Fuentes utilizadas:
Link del repositorio en GitHub: Dia_41_26abril (recomendación: abrir en una ventana nueva)
Una variable nos proporciona un almacenamiento con nombre que nuestros programas pueden manipular. Una variable en R puede almacenar un vector atómico, un grupo de vectores atómicos o una combinación de muchos Robjects.
Un nombre de variable válido consta de letras, números y el punto o el subrayado. El nombre de la variable comienza con una letra o el punto no seguido de un número.
Nombre de la variable | Valido (T or F) | Razón |
---|---|---|
var_name2. | True | Tiene letras, números,puntos y guión bajo. |
var_name% | False | No es valido el % |
2var_name | False | Comienza con un Numero |
.var_name; var.name | True | Puede comenzar con un (.) Pero el (.) No debe ir seguido de un número. |
.2var_name | False | El (.) inicial no pude seguir con un numero. |
_var_name | False | Empezar con guión bajo no es valido |
Las variables en R se pueden asignar de tres formas:
=
:# Operador "=":
variable_con_igual = "Soy un characther definido con ="
print(variable_con_igual)
## [1] "Soy un characther definido con ="
v_equal = 321
print(v_equal)
## [1] 321
<-
: Esto ya lo habias explicado Se peuden definir variables con el <-
(Se tomaran como vector de longitud n => depende si es un numero o una cadena de texto)# Operador "<-":
variable_con_fechas <- "Esto se tomara como un vector con length (depende del tamaño de la cadena de texto)"
"length() devuelve el tamaño de un vector, matriz, array, etc..."
## [1] "length() devuelve el tamaño de un vector, matriz, array, etc..."
length(variable_con_fechas)
## [1] 1
v <- 12.13
"No ejecutar: (invalido) _c_ <- c(12,1341,14214,13421,12.421)"
## [1] "No ejecutar: (invalido) _c_ <- c(12,1341,14214,13421,12.421)"
## Crear un vector con numerics (floats):
## c == combinar, definir un vector
f <- c(3.5,3.2,4.3,1.4,5.0,0.4,2.4) ## Notas de un estudiante.
## Miremos el tipo de varible de f
## además lo imprimimos
print(typeof(f))
## [1] "double"
## Notas de un estudiante en forma de vector.
print(f)
## [1] 3.5 3.2 4.3 1.4 5.0 0.4 2.4
->
: Podemos definir una variable de manera inversa, es decir, poner el valor de la variable y despúes definimos el nombre o la forma de identificar este valor en R.# Definir vaibles a la inversa:
TRUE -> logico
print(logico) # podriamos decir lo mismo pero con la flecha al revez <-, pero al final los dos tendran el mismo resultado
## [1] TRUE
c("Sara", "Daniel", "Felipe", "Cesar", "Yadira", "Ronald") -> NombresDeEstudiantes
print(NombresDeEstudiantes)
## [1] "Sara" "Daniel" "Felipe" "Cesar" "Yadira" "Ronald"
## Observemso si con la flecha a la inversa sigue siendo un vector
print(is.vector(NombresDeEstudiantes))
## [1] TRUE
La función
cat()
combina varios elementos en una salida de impresión continua.
Esta función es equivalente a print(value1, value2,...,value_n)
ya que el print()
de R, es limitado a solmante un valor a la vez (message()
== solo imprime cadenas de texto)
# Cogemos las notas de los estudiantes y sus nombres para imprimirlos en dos lineas con cat():
cat("Notas de uno de los siguientes estudiantes: ", f, "\n") # con el \n es equivalente a un enter en un teclado
## Notas de uno de los siguientes estudiantes: 3.5 3.2 4.3 1.4 5 0.4 2.4
cat("Nombres de algunos estudiantes: ", NombresDeEstudiantes)
## Nombres de algunos estudiantes: Sara Daniel Felipe Cesar Yadira Ronald
el vector ln <- c(TRUE, 1L)
tiene una combinación de clase lógica y numérica. Entonces, la clase lógica se convierte en una clase numérica, lo que hace que sea TRUE
como 1L
.
# Conversión de datos a causa de otros::
ln <- c(TRUE, 1L) # Con el "L", después del numero, le decimos que ese numero es un entero (integer)
## Como podemos ver el vector es de tipo entero, es decir Gracias a "1L", TRUE pasa a ser integer:
print(typeof(ln))
## [1] "integer"
En R, una variable en sí misma no se declara de ningún tipo de datos, sino que obtiene el tipo de datos del objeto R que se le asigna.
Entonces, R se llama lenguaje de tipado dinámico, lo que significa que podemos cambiar el tipo de datos de una variable de la misma variable una y otra vez cuando la usamos en un programa.
# Modificar una varible cuantas veces sea necesario:
Variable_de_Cambio <- "Soy una cadena de texto que muy pronto cambiara a otro tipo de dato"
cat("La clase de la varible es :", class(Variable_de_Cambio), "\n")
## La clase de la varible es : character
Variable_de_Cambio <- logical(2)
cat("Ahora soy de tipo :", class(Variable_de_Cambio), "\n")
## Ahora soy de tipo : logical
Variable_de_Cambio <- 1+21i
cat("Mi nueva clase es :", class(Variable_de_Cambio), "Que complejo es ser complejo", "\n")
## Mi nueva clase es : complex Que complejo es ser complejo
ls()
(¡Importante!):Para conocer todas las variables disponibles actualmente en el espacio de trabajo usamos la función ls()
. Además, la función ls()
puede usar patrones para hacer coincidir los nombres de las variables.
# Vemaos el nombre de todas nuestra variables descritas hasta ahora:
print(ls())
## [1] "f" "ln" "logico"
## [4] "NombresDeEstudiantes" "v" "v_equal"
## [7] "variable_con_fechas" "variable_con_igual" "Variable_de_Cambio"
## Con la opción pattern = "@", encontraremos todas las varibales con el patron (imprima todas las varoables que empiencen "@")
print(ls(pattern = "variable"))
## [1] "variable_con_fechas" "variable_con_igual"
## Las variables que comienzan con un punto (.) Están ocultas, se pueden listar usando el argumento "all.names = TRUE" para la función ls ().
print(ls(all.names = TRUE))
## [1] "f" "ln" "logico"
## [4] "NombresDeEstudiantes" "v" "v_equal"
## [7] "variable_con_fechas" "variable_con_igual" "Variable_de_Cambio"
Las variables se pueden eliminar utilizando la función rm()
.
# Eliminaremos variables con rm():
## Llamamos a la función para mostrar que si estan definidas dentro de R:
cat(v_equal, "\n")
## 321
cat(variable_con_igual, "\n")
## Soy un characther definido con =
## La eliminaremos con rm():
rm(v_equal)
rm(variable_con_igual)
## Volvemos a tomar las variables ver si siguen definidas:
"Puede verificar si la variable se elimina o no con la ayuda de cat()"
## [1] "Puede verificar si la variable se elimina o no con la ayuda de cat()"
### NO EJECUTAR, (SALDRA ERROR):
"cat(v_equal)"
## [1] "cat(v_equal)"
"cat(variable_con_igual)"
## [1] "cat(variable_con_igual)"
Los operadores son los símbolos que le indican a R que debe realizar una tarea. Combinando datos y operadores es que logramos que R haga su trabajo.
Existen operadores específicos para cada tipo de tarea. Los tipos de operadores principales son los siguientes:
Aritméticos.
Relacionales.
Lógicos.
De asignación
Como su nombre lo indica, este tipo de operador es usado para operaciones aritméticas.
En R tenemos los siguientes operadores aritméticos:
Operador | Operación |
---|---|
+ |
Suma |
- |
Resta |
* |
Multiplicación |
/ |
División |
^ |
Potencia |
%% |
División Entera |
# Operadores Aritmeticos:
"No es necesario el cat(), solo para ver el resultado en la consola"
## [1] "No es necesario el cat(), solo para ver el resultado en la consola"
## Suma:
cat(12+21)
## 33
## Resta:
cat(5-3)
## 2
## Multiplicación:
cat(4*12413)
## 49652
## División:
cat(720000/225)
## 3200
# Potencia:
cat(990.1515^2)
## 980400
## División Entera:
"Es el resuido de divir un numero sobre el otro"
## [1] "Es el resuido de divir un numero sobre el otro"
cat(250 %% 9)
## 7
Los operadores relacionales son usados para hacer comparaciones y siempre devuelven como resultado TRUE
o FALSE
.
Operador | Comparación |
---|---|
< |
Menor que |
<= |
Menor o igual que |
> |
Mayor que |
== |
Exactamente igual que |
!= |
No es igual que |
Nota: Es posible comparar cualquier tipo de dato sin que resulte en un error.
Sin embargo, al usar los operadores >
, >=
, <
y <=
con cadenas de texto, estos tienen un comportamiento especial.
# ¿porque con texto, jorge > ana?:
cat("Jorge" > "Ana")
## TRUE
Este resultado se debe a que se ha hecho una comparación por orden alfabético. En este caso, la palabra "Jorge"
tendría una posición posterior a "Ana"
, pues empieza con “J”
y esta letra tiene una posición posterior a la “A”
en el alfabeto. Por lo tanto, es verdadero que sea “mayor”.
# Operadores relacionales:
## Menor que:
cat(1<100000, "\n")
## TRUE
## Menor o igualque:
cat(6<= 12, "\n")
## TRUE
## Mayor que:
cat(3231121> 13131, "\n")
## TRUE
## Mayor o igual que:
cat(1241>=113, "\n")
## TRUE
## Exactamente igual que:
x <- 5
y <- 5
cat("x:",x, "y:", y, "\n")
## x: 5 y: 5
cat(x == 5, "\n")
## TRUE
## NO es igual que:
cat(x!=y, "\n")
## FALSE
Los operadores lógicos son usados para operaciones de álgebra Booleana, es decir, para describir relaciones lógicas, expresadas como verdadero (TRUE
) o falso (FALSE
).
Operador | Comparación |
---|---|
x|y |
x Ó y es verdadero |
x & y |
x Y y son verdaderos |
!x |
x no es verdadero(Negación) |
isTRUE(x) |
x es verdadero (afirmación) |
los operadores |
y &
siguen las siguientes reglas:
|
devuelve TRUE
si algunos de los datos es TRUE
&
solo devuelve TRUE
si ambos de los datos es TRUE
|
solo devuelve FALSE
si ambos datos son FALSE
&
devuelve FALSE
si alguno de los datos es FALSE
NOTA:
Estos operadores pueden ser usados con estos con datos de tipo numérico, lógico y complejo. Al igual que con los operadores relacionales, los operadores lógicos siempre devuelven TRUE
o FALSE
.
Para realizar operaciones lógicas, todos los valores numéricos y complejos distintos a 0
son coercionados a TRUE
, mientras que 0
siempre es coercionado a FALSE
.
# Operadores Lógicos:
## OR:
cat(5|0, "\n")
## TRUE
## AND:
cat(5 & 0, "\n")
## FALSE
"¿Cero es TRUE o FALSE?..."
## [1] "¿Cero es TRUE o FALSE?..."
## Afirmación:
cat("El cero es :", isTRUE(0), "\n")
## El cero es : FALSE
## Negación:
cat( "Numero Complejo 12+1i es: ",!(12+1i), "\n",!(FALSE & FALSE), "\n")
## Numero Complejo 12+1i es: FALSE
## TRUE
Este opereador esta al principio del documento, es decir: “Como se definen varibles”:
=
<-