R-函数

R语言函数

R语言具有大量内置函数,用户也可以创建自己的函数。

在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需的参数。

自定义函数

使用关键字 function 创建R语言的函数。 R语言的函数定义的基本语法如下

函数名 <- function(参数列表){
    函数体
    返回值     #可以没有
}

参数是可选的; 也就是说,一个函数可能不包含参数。 参数也可以有默认值。

例如:

fun.test <- function(a,b){
    c <- a+b
    print(c)
}

fun.test(1,2)  #调用函数

#输出:
[1] 3

有返回值的函数:

fun.test <- function(a,b){
    c <- a+b
    return (c)   #括号不能省去
}

c = fun.test(1,2)
print(c)

#输出:
[1] 3

调用函数

与python类似,调用函数的参数传入方式也有两种,我的理解就是:按顺序的不按顺序的

  • 按顺序的,就是指按照参数的位置进行传入参数,例如上面的两个例子
  • 不按顺序的,要指定参数名进行传递参数,例如:
fun.test <- function(a,b){
    c <- a / b
    return (c)   
}

c = fun.test(b=10,a=20) 
print(c)

#输出:
[1] 2

默认参数

r函数也可以设置默认参数,与其他语言类似,默认参数在定义时也要放在最后面,避免在调用时发生错误,例如

fun.test <- function(a,b= 5){
    c <- a / b
    return (c)   
}

c = fun.test(20) 
print(c)

#输出:
[1] 4

注意==:默认参数在设置时,以及函数在调用时传入参数,都只能用 =,不能用 <-

R函数的功能延迟

R语言在定义时设置了多个参数,但在调用时不一定要把全部参数都给出,也可以只传入部分参数,多余的参数如果没用到就不会报错,只有用到且执行到对应语句才会报错(报错延迟),这与python有些不一样,例如:

fun.test <- function(a,b,d,e){
    c <- a+b
    print(c)                     #整个函数没有用到参数 d, e
}

c = fun.test(1,2)    
print(c)           #没有报错

#输出:
[1] 3

只有用到且执行到函数内部对应语句才会报错,例如:

fun.test <- function(a,b,d,e){
    c <- a+b
    print(c)
    print(d+e)         #只有执行到这条语句才会报错
}

fun.test(100,200)

#输出:
[1]  300

Error in print(d + e): 缺少参数"d",也没有缺省值
Traceback:

1. fun.test(100, 200)
2. print(d + e)   # at line 4 of file <text>
posted @ 2020-08-04 16:47  aJream  阅读(244)  评论(0编辑  收藏  举报