R语言函数
- R 函数的创建和结构:函数在 R 中是可重复使用的代码块,通过
function()
关键字创建,包含名称、参数和语句。 - 函数调用与命名参数:定义函数后,可以通过传递参数调用它。支持使用命名参数以改变参数的顺序。
- 默认参数值和返回值:函数可以具有默认参数值,用于在未传递参数时使用。使用
return()
关键字从函数返回值。
介绍 R 函数
函数只是一块可以从程序的任何部分调用和运行的代码块。它们被用于将我们的代码分解成简单的部分,并避免重复的代码。
您可以通过参数将数据传递给函数,并返回一些其他数据作为结果 。您可以使用 function()
关键字在 R 中创建函数。语法是:
func_name <- function (parameters) {
statement
}
这里,func_name
是函数的名称。例如,
# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}
在这里,我们定义了一个名为 power 的函数,它接受两个参数 - a
和 b
。在函数内部,我们包含了打印 a
的 b
次幂的值的代码。
调用函数
定义函数后,您可以使用函数名称和参数来调用函数。例如,
# 定义一个计算幂的函数
power <- function(a, b) {
print(paste("a 的 b 次幂是: ", a^b))
}
# 使用参数调用 power 函数
power(2, 3)
输出
[1] "a 的 b 次幂是: 8"
这里,我们使用两个参数 - 2
和 3
来调用函数。这将打印 2
的 3
次幂的值,即 8
。
实际函数中使用的参数被称为形式参数。它们也被称为参数。调用函数时传递给函数的值被称为实际参数。
命名参数
在上述 power()
函数调用中,函数调用时传递的参数必须与函数声明时传递的参数顺序相同。
这意味着当我们调用 power(2, 3)
时,值 2
被分配给 a
,3
被分配给 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
。