R语言 函数

R语言 函数

当你想多次执行某项任务时,函数很有用。一个函数接受输入参数,并通过执行函数中的有效R命令来产生输出。在R编程语言中,当你创建一个函数时,函数名称和创建函数的文件不需要相同,你可以在一个R文件中拥有一个或多个函数定义。

R语言 函数类型

  • 内置函数: R语言的内置函数是sq()、mean()、max(),这些函数可以由用户在程序中直接调用。
  • 用户定义的函数: R语言允许我们编写自己的函数。

R语言 函数

在R语言中,函数是通过 function() 命令创建的 。 函数文件的一般结构如下。

R编程中的函数

注意: 在上述语法中,f是函数名称,这意味着你正在创建一个名称为f的函数,它接受某些参数并执行以下语句。

R编程语言中的内置函数

这里我们将使用sum()、max()和min()等内置函数。

# 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))
R

输出

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

R编程语言中的用户定义函数

R提供了内置函数,如 print()cat() 等,但我们也可以创建自己的函数。这些函数被称为用户定义的函数。

例子 :

# 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))
R

输出

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

单一输入单一输出

现在在R中创建一个函数,它将接受一个单一的输入,并给我们一个单一的输出。

下面是一个例子,创建一个计算圆的面积的函数,它的参数是半径。因此,要创建一个函数,将该函数命名为 “areaOfCircle”,需要传递的参数是圆的 “半径”。

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

输出

12.56637
R

多输入多输出

现在在R语言中创建一个函数,该函数将接受多个输入,并使用一个列表给我们多个输出。

R语言中的函数接受多个输入对象,但只返回一个对象作为输出,然而这并不是一个限制,因为你可以创建所有你想创建的输出的列表,一旦列表被创建,你可以访问它们到列表中的元素,并得到你想要的答案。

让我们考虑一下这个例子,创建一个函数 “Rectangle”,它接收矩形的 “长度 “和 “宽度 “并返回该矩形的面积和周长。由于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"])
R

输出

$Area
[1] 6

$Perimeter
[1] 10
R

R编程语言中的内联函数

有时候,当你想创建一个非常小的函数时,创建一个R脚本文件、加载它、执行它是一个很大的工作。因此,在这种情况下,我们可以做的是内联函数。

要创建一个内联函数,你必须使用带有参数x的函数命令,然后是函数的表达式。

例子

# 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)
R

输出

65.33333
15.33333
0
R

在R编程语言中向函数传递参数

有几种方法可以将参数传递给函数。

  • 情况1 :一般来说,在R语言中,参数是按照函数定义中的相同顺序传递给函数的。
  • 情况2 :如果你不想遵循任何顺序,你可以做的是用参数的名字按任何顺序传递参数。
  • 情况3 :如果没有传递参数,将使用默认值来执行函数。

现在,让我们看看以下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())
R

输出

6
32
20
R

R编程语言中的函数的懒惰评估

在R语言中,函数是以一种懒惰的方式执行的。当我们说懒惰的时候,它的意思是如果缺少一些参数,只要执行时不涉及这些参数,函数仍然可以执行。

举个例子

在下面给出的函数 “圆柱体 “中。函数中定义了三个参数 “直径”、”长度 “和 “半径”,在计算体积时不涉及 “半径 “这个参数。现在,当你传递这个参数 “直径 “和 “长度 “时,即使你没有传递这个 “半径”,函数仍然会执行,因为这个半径没有在函数的计算中使用。
让我们用下面的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))
R

输出

196.3495
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))
R

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册