Funciones en Programación R

Las funciones son útiles cuando desea realizar una determinada tarea varias veces. Una función acepta argumentos de entrada y produce la salida mediante la ejecución de comandos R válidos que están dentro de la función. En el lenguaje de programación R, cuando está creando una función, el nombre de la función y el archivo en el que está creando la función no necesitan ser iguales y puede tener una o más definiciones de función en un solo archivo R.

Tipos de función en R Language

  • Función integrada: la función integrada R es sq(), mean(), max(), estas funciones son llamadas directamente en el programa por los usuarios.
  • Función definida por el usuario: el lenguaje R nos permite escribir nuestra propia función.

Funciones en lenguaje R

Las funciones se crean en R usando el comando function() . La estructura general del archivo de funciones es la siguiente: 

Nota: En la sintaxis anterior f es el nombre de la función, esto significa que está creando una función con el nombre f que toma ciertos argumentos y ejecuta las siguientes declaraciones.

Función incorporada en el lenguaje de programación R

Aquí usaremos funciones integradas como sum(), max() y min().

R

# Find sum of numbers 4 to 6.
print(sum(4:6))
 
# Find max of numbers 4 and 6.
print(max(4:6))
 
# Find min of numbers 4 and 6.
print(min(4:6))

Producción:

[1] 15
[1] 6
[1] 4

Funciones definidas por el usuario en lenguaje de programación R

R proporciona funciones integradas como print() , cat() , etc. pero también podemos crear nuestras propias funciones. Estas funciones se denominan funciones definidas por el usuario.

Ejemplo :  

R

# A simple R function to check
# whether x is even or odd
 
evenOdd = function(x){
  if(x %% 2 == 0)
    return("even")
  else
    return("odd")
}
 
print(evenOdd(4))
print(evenOdd(3))

Producción: 

[1] "even"
[1] "odd"

Entrada única Salida única

Ahora cree una función en R que tomará una sola entrada y nos dará una sola salida. 

El siguiente es un ejemplo para crear una función que calcula el área de un círculo que toma como argumento el radio. Entonces, para crear una función, nombre la función como «areaOfCircle» y los argumentos que se necesitan pasar son el «radio» del círculo.  

R

# A simple R function to calculate
# area of a circle
 
areaOfCircle = function(radius){
  area = pi*radius^2
  return(area)
}
 
print(areaOfCircle(2))

Producción: 

12.56637

Entrada múltiple Salida múltiple

Ahora cree una función en R Language que tomará múltiples entradas y nos dará múltiples salidas usando una lista. 

Las funciones en R Language toman múltiples objetos de entrada pero devuelven solo un objeto como salida; sin embargo, esto no es una limitación porque puede crear listas de todas las salidas que desea crear y una vez que se crea la lista puede acceder a ellos en los elementos de la lista y obtenga las respuestas que desea.

Consideremos este ejemplo para crear una función «Rectángulo» que toma «largo» y «ancho» del rectángulo y devuelve el área y el perímetro de ese rectángulo. Dado que R Language puede devolver solo un objeto. Por lo tanto, cree un objeto que sea una lista que contenga «área» y «perímetro» y devuelva la lista. 

R

# A simple R function to calculate
# area and perimeter of a rectangle
 
Rectangle = function(length, width){
  area = length * width
  perimeter = 2 * (length + width)
   
  # create an object called result which is
  # a list of area and perimeter
  result = list("Area" = area, "Perimeter" = perimeter)
  return(result)
}
 
resultList = Rectangle(2, 3)
print(resultList["Area"])
print(resultList["Perimeter"])

Producción: 

$Area
[1] 6

$Perimeter
[1] 10

Funciones en línea en lenguaje de programación R

A veces, crear un archivo de script R, cargarlo, ejecutarlo es mucho trabajo cuando solo desea crear una función muy pequeña. Entonces, lo que podemos hacer en este tipo de situación es una función en línea.

Para crear una función en línea, debe usar el comando de función con el argumento x y luego la expresión de la función. 

Ejemplo: 

R

# A simple R program to
# demonstrate the inline function
 
 
f = function(x) x^2*4+x/3
 
print(f(4))
print(f(-2))
print(0)

Producción: 

65.33333
15.33333
0

Pasar argumentos a funciones en lenguaje de programación R

Hay varias formas de pasar los argumentos a la función: 

  • Caso 1 : Generalmente en R, los argumentos se pasan a la función en el mismo orden que en la definición de la función.
  • Caso 2 : si no desea seguir ningún orden, lo que puede hacer es pasar los argumentos usando los nombres de los argumentos en cualquier orden.
  • Caso 3 : si no se pasan los argumentos, se utilizan los valores predeterminados para ejecutar la función.

Ahora, veamos los ejemplos para cada uno de estos casos en el siguiente código R:

R

# A simple R program to demonstrate
# passing arguments to a function
 
Rectangle = function(length=5, width=4){
  area = length * width
  return(area)
}
 
# Case 1:
print(Rectangle(2, 3))
 
# Case 2:
print(Rectangle(width = 8, length = 4))
 
# Case 3:
print(Rectangle())

Producción: 

6
32
20

Evaluaciones perezosas de funciones en lenguaje de programación R

En R las funciones se ejecutan de forma perezosa. Cuando decimos perezoso, lo que significa es que si faltan algunos argumentos, la función aún se ejecuta siempre que la ejecución no involucre esos argumentos.

Ejemplo: 

En la función «Cilindro» dada a continuación. Se definen tres argumentos «diámetro», «longitud» y «radio» en la función y el cálculo del volumen no involucra este argumento «radio» en este cálculo. Ahora, cuando pasa este argumento «diámetro» y «longitud» aunque no esté pasando este «radio», la función aún se ejecutará porque este radio no se usa en los cálculos dentro de la función. 
Ilustremos esto en un código R dado a continuación:

R

# A simple R program to demonstrate
# Lazy evaluations of functions
 
Cylinder = function(diameter, length, radius ){
  volume = pi*diameter^2*length/4
  return(volume)
}
 
# This'll execute because this
# radius is not used in the
# calculations inside the function.
print(Cylinder(5, 10))

Producción: 

196.3495

Si no pasa el argumento y luego lo usa en la definición de la función, arrojará un error de que este «radio» no se pasa y se está usando en la definición de la función.

Ejemplo: 

R

# A simple R program to demonstrate
# Lazy evaluations of functions
 
Cylinder = function(diameter, length, radius ){
  volume = pi*diameter^2*length/4
  print(radius)
  return(volume)
}
 
# This'll throw an error
print(Cylinder(5, 10))

Producción: 

Error in print(radius) : argument "radius" is missing, with no default 

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *