跳到主要内容

R语言函数

提示
  1. R 函数的创建和结构:函数在 R 中是可重复使用的代码块,通过 function() 关键字创建,包含名称、参数和语句。
  2. 函数调用与命名参数:定义函数后,可以通过传递参数调用它。支持使用命名参数以改变参数的顺序。
  3. 默认参数值和返回值:函数可以具有默认参数值,用于在未传递参数时使用。使用 return() 关键字从函数返回值。

介绍 R 函数

函数只是一块可以从程序的任何部分调用和运行的代码块。它们被用于将我们的代码分解成简单的部分,并避免重复的代码。

您可以通过参数将数据传递给函数,并返回一些其他数据作为结果。您可以使用 function() 关键字在 R 中创建函数。语法是:

func_name <- function (parameters) {
statement
}

这里,func_name 是函数的名称。例如,

# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}

在这里,我们定义了一个名为 power 的函数,它接受两个参数 - ab。在函数内部,我们包含了打印 ab 次幂的值的代码。

调用函数

定义函数后,您可以使用函数名称和参数来调用函数。例如,

# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}

# 使用参数调用 power 函数
power(2, 3)

输出

[1] "a 的 b 次幂是:  8"

这里,我们使用两个参数 - 23 来调用函数。这将打印 23 次幂的值,即 8

实际函数中使用的参数被称为形式参数。它们也被称为参数。调用函数时传递给函数的值被称为实际参数。

命名参数

在上述 power() 函数调用中,函数调用时传递的参数必须与函数声明时传递的参数顺序相同。

这意味着当我们调用 power(2, 3) 时,值 2 被分配给 a3 被分配给 b。如果您想更改要传递的参数的顺序,您可以使用命名参数。例如,

# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}

# 使用参数调用 power 函数
power(b=3, a=2)

输出

[1] "a 的 b 次幂是:  8"

这里,不管你在函数调用期间传递的参数顺序如何,结果都是相同的。

您也可以使用命名和未命名参数的混合。例如,

# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}

# 使用参数调用 power 函数
power(b=3, 2)

输出

[1] "a 的 b 次幂是:  8"

默认参数值

您可以为函数分配默认参数值。要做到这一点,您可以在函数定义期间为函数参数指定适当的值。

当您在没有参数的情况下调用函数时,将使用默认值。例如,

# 定义一个计算幂的函数
power <- function(a = 2, b) {
print(paste("a 的 b 次幂是: ", a^b))
}

# 使用参数调用 power 函数
power(2, 3)

# 使用默认参数调用函数
power(b=3)

输出

[1] "a raised to the power b is:  8"
[1] "a raised to the power b is: 8"

这里,在第二次调用 power() 函数时,我们只指定了 b 参数作为命名参数。在这种情况下,它使用函数定义中提供的 a 的默认值。

返回值

你可以使用 return() 关键字从函数返回值。例如,

# 定义一个计算幂的函数
power <- function(a, b) {
return (a^b)
}

# 使用参数调用 power 函数
print(paste("a raised to the power b is: ", power(2, 3)))

输出

[1] "a raised to the power b is:  8"

这里,我们没有在函数内部打印结果,而是返回了 a^b。当我们用参数调用 power() 函数时,结果被返回,可以在调用时打印。

嵌套函数

在 R 中,你可以通过两种不同的方式创建嵌套函数。

  • 通过在另一个函数调用中调用一个函数。
  • 通过在另一个函数内部编写一个函数。

示例 1:在另一个函数调用中调用函数

考虑下面的例子来创建一个添加两个数字的函数。

# 定义一个计算加法的函数
add <- function(a, b) {
return (a + b)
}

# add 函数的嵌套调用
print(add(add(1, 2), add(3, 4)))

输出

[1] 10

这里,我们创建了一个名为 add() 的函数来添加两个数字。但在函数调用期间,参数是对 add() 函数的调用。

首先,计算 add(1, 2)add(3, 4),然后将结果作为参数传递给外层的 add() 函数。因此,结果是所有四个数字的总和。

示例 2:在另一个函数内部编写函数

让我们通过在一个函数内部编写另一个函数来创建一个嵌套函数。

# 定义一个计算幂的函数
power <- function(a) {
exponent <- function(b) {
return (a^b)
}
return (exponent)
}

# 调用嵌套函数
result <- power(2)
print(result(3))

输出

[1] 8

这里,我们不能直接调用 power() 函数,因为 exponent() 函数是在 power() 函数内部定义的。

因此,我们需要首先用参数 a 调用外层函数,并将其设置为一个变量。这个变量现在充当函数,我们向其传递下一个参数 b