小白教程
所有教程
关于
Search
172.71.254.146
172.71.254.146
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“R 函数”的源代码
本页内容
上一节:
R_循环
下一节:
R_字符串
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:R 函数}}[[Category:R 教程|9]] = R 函数 = 函数是一组一起执行一个任务的语句。R 语言本身提供了很多的内置函数,当然我们也可以自己创建函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。 函数'''声明'''告诉编译器函数的名称、返回类型和参数。函数'''定义'''提供了函数的实际主体。 R 语言中函数是一个对象,可以拥有属性。 == 定义函数 == R 语言中的函数定义使用 function 关键字,一般形式如下: <sample title="" desc="" lang="r" hererun="1"> function_name <- function(arg_1, arg_2, ...) { // 函数体 } </sample> 说明: * function_name : 为函数名 * arg_1, arg_2, ... : 形式参数列表 函数返回值使用 return()。 == 内置函数 == R 语言提供了很多有用的内置函数,我们无需定义它就可以直接使用。 例如:seq(), mean(), max(), sum(x) 以及 paste(...) 等。 <sample title="" desc="" lang="r" hererun="1"> # 输出 32 到 44 到的所有数字 print(seq(32,44)) # 计算两个数的平均数 print(mean(25:82)) # 计算 41 到 68 所有数字之和 print(sum(41:68)) </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 32 33 34 35 36 37 38 39 40 41 42 43 44 [1] 53.5 [1] 1526 </sample> === 自定义函数 === 我们可以自己创建函数,用于特定到功能,定义后可以向内置函数一样使用它们。 下面演示两如何自定义函数: <sample title="" desc="" lang="r" hererun="1"> # 定义一个函数,用于计数一个系列到平方值 new.function <- function(a) { for(i in 1:a) { b <- i^2 print(b) } } </sample> 接下来我们可以调用函数: <sample title="" desc="" lang="r" hererun="1"> new.function <- function(a) { for(i in 1:a) { b <- i^2 print(b) } } # 调用函数,并传递参数 new.function(6) </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 1 [1] 4 [1] 9 [1] 16 [1] 25 [1] 36 </sample> 我们也可以创建一个不带参数的函数: <sample title="" desc="" lang="r" hererun="1"> new.function <- function() { for(i in 1:5) { print(i^2) } } # 调用函数,不需要传递参数 new.function() </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 1 [1] 4 [1] 9 [1] 16 [1] 25 </sample> === 带有参数值的函数 === 函数参数,可以按函数创建时的顺序来传递,也可以不按顺序,但需要指定参数名: <sample title="" desc="" lang="r" hererun="1"> # 创建函数 new.function <- function(a,b,c) { result <- a * b + c print(result) } # 不带参数名 new.function(5,3,11) # 带参数名 new.function(a = 11, b = 5, c = 3) </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 26 [1] 58 </sample> 函数创建时也可以为参数指定默认值,如果调用的时候不传递参数就会使用默认值: <sample title="" desc="" lang="r" hererun="1"> # 创建带默认参数的函数 new.function <- function(a = 3, b = 6) { result <- a * b print(result) } # 调用函数,但不传递参数,会使用默认的 new.function() # 调用函数,传递参数 new.function(9,5) </sample> 执行以上代码,输出结果为: [1] 18 [1] 45 === 懒惰计算的函数 === 懒惰计算将推迟计算工作直到系统需要这些计算的结果。如果不需要结果,将不用进行计算。 默认情况下,R 函数对参数的计算是懒惰的,就是只有我们在计算它的时候才会调用: <sample title="" desc="" lang="r" hererun="1"> f <- function(x) { 10 } f() </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 10 </sample> 以上代码执行,并没有报错,虽然我们没有传入参数,但函数体内没有使用参数 x,所以不会去调用它,也不会报错。 <sample title="" desc="" lang="r" hererun="1"> new.function <- function(a, b) { print(a^2) print(a) print(b) # 使用到 b,但未传入,所以会报错 } # 传入一个参数 new.function(6) </sample> 执行以上代码,输出结果为: <sample title="" desc="" lang="r" hererun="1"> [1] 36 [1] 6 Error in print(b) : 缺少参数"b",也没有缺省值 Calls: new.function -> print 停止执行 </sample>
返回至“
R 函数
”。
上一节:
R_循环
下一节:
R_字符串