📜  R 编程中的函数(1)

📅  最后修改于: 2023-12-03 15:19:40.866000             🧑  作者: Mango

R 编程中的函数

在 R 语言中,函数被认为是一等公民,这意味着函数可以像其他对象一样被传递、存储和操作。在本文中,我们将介绍 R 语言中函数的一些基础知识,包括函数定义、参数传递、返回值和变量作用域等。

函数定义

在 R 语言中,函数可以使用 function 关键字定义。下面是定义一个简单函数的示例代码:

my_function <- function(x, y) {
    z <- x + y
    return(z)
}

以上代码定义了一个名为 my_function 的函数,该函数接受两个参数 xy,并返回它们的和。

参数传递

在 R 语言中,函数参数可以按照位置或名称传递。下面是一个按照位置传递参数的示例:

result <- my_function(3, 4)

在上面的示例中,34 分别对应函数 my_function 中的 xy 参数。

你也可以按名称传递参数,这样做可以允许你跳过一些参数或者以不同的顺序指定参数。下面是一个按名称传递参数的示例:

result <- my_function(y = 4, x = 3)

在上面的示例中,xy 参数被以不同的顺序指定。

返回值

在 R 语言中,函数可以使用 return 语句返回一个值。如果 return 语句被省略,则函数将返回最后一个执行的表达式的值。下面是一个返回值的示例:

my_function <- function(x, y) {
    z <- x + y
    return(z)
}

result <- my_function(3, 4)
print(result) # 输出为 7

在上面的示例中,函数使用 return 语句返回 z 的值,函数被调用时 result 变量被赋值为 7

变量作用域

在 R 语言中,变量的作用域分为全局作用域和局部作用域。全局作用域中的变量可以在函数内部和外部使用,而局部作用域中的变量只能在函数内部使用。

下面是一个局部作用域的示例:

my_function <- function(x, y) {
    z <- x + y
    print(z) # 局部变量 z
}

z <- 0 # 全局变量 z
my_function(3, 4)
print(z) # 全局变量 z,输出为 0

在上面的示例中,z 是在函数内部定义的局部变量。在函数中,局部变量 z 被赋值为 7,然后被打印出来。在函数返回后,全局变量 z 的值仍然是 0

如果要在函数内部访问全局变量,可以使用 <<- 运算符。下面是一个访问全局变量的示例:

my_function <- function(x, y) {
    z <<- x + y
}

z <- 0
my_function(3, 4)
print(z) # 输出为 7

在上面的示例中,我们使用 <<- 运算符将 z 定义为全局变量。在函数内部,我们将 z 的值赋为 7。在函数返回后,全局变量 z 的值也被修改成了 7

结论

在 R 语言中,函数是一等公民,可以像其他对象一样被传递、存储和操作。函数可以按照位置或名称传递参数,并且可以使用 return 语句返回一个值。变量的作用域分为全局作用域和局部作用域,可以使用 <<- 运算符访问全局变量。