En R, las variables son los contenedores para almacenar valores de datos. Son referencias o punteros a un objeto en la memoria, lo que significa que cada vez que se asigna una variable a una instancia, se asigna a esa instancia. Una variable en R puede almacenar un vector, un grupo de vectores o una combinación de muchos objetos R.
Ejemplo :
# R program to demonstrate # variable assignment # Assignment using equal operator var1 = c(0, 1, 2, 3) print(var1) # Assignment using leftward operator var2 <- c("Python", "R") print(var2) # A Vector Assignment a = c(1, 2, 3, 4) print(a) b = c("Debi", "Sandeep", "Subham", "Shiba") print(b) # A group of vectors Assignment using list c = list(a, b) print(c)
Producción:
[1] 0 1 2 3 [1] "Python" "R" [1] 1 2 3 4 [1] "Debi" "Sandeep" "Subham" "Shiba" [[1]] [1] 1 2 3 4 [[2]] [1] "Debi" "Sandeep" "Subham" "Shiba"
Convención de nomenclatura para variables
- El nombre de la variable en R tiene que ser caracteres alfanuméricos con la excepción del guión bajo (‘_’) y el punto (‘.’) , los caracteres especiales que se pueden usar en los nombres de las variables.
- El nombre de la variable debe comenzar siempre con un alfabeto.
- No se permiten otros caracteres especiales como (‘!’, ‘@’, ‘#’, ‘$’) en los nombres de las variables.
Ejemplo:
# R program to demonstrate # rules for naming the variables # Correct naming b2 = 7 # Correct naming Amiya_Profession = "Student" # Correct naming Amiya.Profession = "Student" # Wrong naming 2b = 7 # Wrong naming Amiya@Profession = "Student"
El código anterior cuando se ejecuta generará un error debido a la denominación incorrecta de las variables.
Error: unexpected symbol in "2b" Execution halted
Alcance de una variable
La ubicación donde podemos encontrar una variable y también acceder a ella si es necesario se denomina alcance de una variable. Hay principalmente dos tipos de ámbitos variables:
- Variables globales: Las variables globales son aquellas variables que existen a lo largo de la ejecución de un programa. Se puede cambiar y acceder desde cualquier parte del programa.
- Variables locales: las variables locales son aquellas variables que existen solo dentro de cierta parte de un programa como una función y se liberan cuando finaliza la llamada a la función.
Variable global
Como sugiere el nombre, se puede acceder a las variables globales desde cualquier parte del programa.
- Están disponibles a lo largo de la vida de un programa.
- Se declaran en cualquier parte del programa fuera de todas las funciones o bloques.
- Declaración de variables globales: las variables globales generalmente se declaran fuera de todas las funciones y bloques. Se puede acceder a ellos desde cualquier parte del programa.
# R program to illustrate # usage of global variables # global variable global = 5 # global variable accessed from # within a function display = function(){ print(global) } display() # changing value of global variable global = 10 display()
Producción:
[1] 5 [1] 10
En el código anterior, la variable ‘ global ‘ se declara en la parte superior del programa, fuera de todas las funciones, por lo que es una variable global y se puede acceder a ella o actualizarla desde cualquier parte del programa.
Variable local
Se dice que las variables definidas dentro de una función o bloque son locales para esas funciones.
- Las variables locales no existen fuera del bloque en el que se declaran, es decir, no se puede acceder a ellas ni utilizarlas fuera de ese bloque.
- Declarar variables locales: Las variables locales se declaran dentro de un bloque.
Ejemplo:
# R program to illustrate # usage of local variables func = function(){ # this variable is local to the # function func() and cannot be # accessed outside this function age = 18 } print(age)
Producción:
Error in print(age) : object 'age' not found
El programa anterior muestra un error que dice «objeto ‘edad’ no encontrado». La variable edad se declaró dentro de la función “func()”, por lo que es local para esa función y no visible para la parte del programa fuera de esta función.
Para corregir el error anterior, tenemos que mostrar el valor de la edad variable solo desde la función «func()».
Ejemplo:
# R program to illustrate # usage of local variables func = function(){ # this variable is local to the # function func() and cannot be # accessed outside this function age = 18 print(age) } cat("Age is:\n") func()
Producción:
Age is: [1] 18
Acceso a variables globales
Se puede acceder a las variables globales desde cualquier parte del código, a diferencia de las variables locales que tienen un alcance restringido al bloque de código en el que se crean.
Ejemplo:
f = function() { # a is a local variable here a <-1 } f() # Can't access outside the function print(a) # This'll give error
Producción:
Error in print(a) : object 'a' not found
En el código anterior, vemos que no podemos acceder a la variable «a» fuera de la función, ya que está asignada por un operador de asignación (<-) que convierte a «a» en una variable local. Para realizar asignaciones a variables globales, se utiliza un operador de superasignación (<<-) .
¿Cómo funciona el operador de súper asignación?
Al usar este operador dentro de una función, busca la variable en el marco del entorno principal, si no la encuentra, continúa buscando el siguiente nivel hasta llegar al entorno global. Si aún no se encuentra la variable, se crea y asigna a nivel global.
Ejemplo:
# R program to illustrate # Scope of variables outer_function = function(){ inner_function = function(){ # Note that "<<-" operator here # makes a as global variable a <<- 10 print(a) } inner_function() print(a) } outer_function() # Can access outside the function print(a)
Producción:
[1] 10 [1] 10 [1] 10
Cuando se encuentra la instrucción “a <<- 10” dentro de función_interna() , busca la variable “a” en el entorno función_exterior() . Cuando la búsqueda falla, busca en R_GlobalEnv . Dado que «a» tampoco está definido en este entorno global, se crea y asigna allí, al que ahora se hace referencia e imprime desde la función interior () y la función exterior() .
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA