函数是一个组织在一起的一组以执行特定任务的语句。R语言有大量的内置函数,用户也可以创建自己的函数。

在R语言中的函数是一个对象,所以R语言解释器为能够通过控制到该函数,带有参数可能是函数必要完成的操作。

反过来函数执行其任务,并将控制返回到其可以被存储在其它的目的解释器以及任何结果。

函数定义

R函数是通过使用关键字 function 来创建。R函数的定义基本语法如下:

function_name <- function(arg_1, arg_2, ...) {
Function body
}

函数组件

函数的不同部分是:

  • 函数名称: 这是函数的实际名称。它被存入R环境作为一个对象使用此名称。
  • 参数:  参数是一个占位符。当调用一个函数,传递一个值到参数。参数是可选的; 也就是说,一个函数可以含有任何参数。此外参数可以有默认值。
  • 函数体: 函数体包含定义函数是使用来做什么的语句集合。
  • 返回值: 一个函数的返回值是在函数体中评估计算最后一个表达式的值。

示例

R具有许多内置函数可直接在程序中调用而不先定义它们。我们也可以创建和使用称为用户自定义函数,如那些我们自己定义的函数。

内置函数

内建函数的简单例子如:seq()mean()max()sum(x) 和 paste(...) 等等. 它们被直接由用户编写的程序调用。可以参考最广泛用 在R编程里面的函数

# Create a sequence of numbers from 32 to 44.
print(seq(32,44)) # Find mean of numbers from 25 to 82.
print(mean(25:82)) # Find sum of numbers frm 41 to 68.
print(sum(41:68))

当我们上面的代码执行时,它产生以下结果:

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

用户定义函数

我们可以在R语言中创建用户定义的函数,它们是特定于用户想要实现什么功能,一旦创建了它们可以像内置函数一样使用。下面是函数如何创建和使用的一个例子。

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
}

调用函数

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
} # Call the function new.function supplying 6 as an argument.
new.function(6)

当我们上面的代码执行时,它产生以下结果:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

调用函数不带参数

# Create a function without an argument.
new.function <- function() {
for(i in 1:5) {
print(i^2)
}
} # Call the function without supplying an argument.
new.function()

当我们上面的代码执行时,它产生以下结果:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

调用函数带有参数值(按位置和名称)

参数在传到函数调用可以以相同的顺序如提供在函数定义的顺序一样,或者它们可以以不同的顺序提供(按参数名称)。

# Create a function with arguments.
new.function <- function(a,b,c) {
result <- a*b+c
print(result)
} # Call the function by position of arguments.
new.function(5,3,11) # Call the function by names of the arguments.
new.function(a=11,b=5,c=3)

当我们上面的代码执行时,它产生以下结果:

[1] 26
[1] 58

带有调用默认参数的函数

我们可以在函数定义中定义的参数的值并调用该函数,而不提供任何参数来获取默认参数的结果。但是,我们也可以通过提供参数的新值调用来这些函数,并得到非默认的结果。

# Create a function with arguments.
new.function <- function(a = 3,b =6) {
result <- a*b
print(result)
} # Call the function without giving any argument.
new.function() # Call the function with giving new values of the argument.
new.function(9,5)

当我们上面的代码执行时,它产生以下结果:

[1] 18
[1] 45

函数延迟计算

函数的参数在延迟方式计算,这意味着只有在需要函数体时,它们才会进行评估计算。

# Create a function with arguments.
new.function <- function(a, b) {
print(a^2)
print(a)
print(b)
} # Evaluate the function without supplying one of the arguments.
new.function(6)

当我们上面的代码执行时,它产生以下结果:

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default

R语言函数的更多相关文章

  1. R语言函数化学习笔记6

    R语言函数化学习笔记 1.apply函数 可以让list或者vector的元素依次执行一遍调用的函数,输出的结果是list格式 2.sapply函数 原理和list一样,但是输出的结果是一个向量的形式 ...

  2. R语言函数化学习笔记3

    R语言函数化学习笔记3 R语言常用的一些命令函数 1.getwd()查看当前R的工作目录 2.setwd()修改当前工作目录 3.str()可以输出指定对象的结构(类型,位置等),同理还有class( ...

  3. R语言函数化编程笔记2

    R语言函数化编程笔记2 我学过很多的编程语言,可以我写的代码很啰嗦,一定是我太懒了.或许是基础不牢地动山摇 1.为什么要学函数 函数可以简化编程语言,减少重复代码或者说面向对象的作用 2.函数 2.1 ...

  4. R语言函数化编程笔记1

    R语言函数化编程笔记1 notes:有一个不错的网站叫做stack overflow,有问题可以从上面找或者搜索答案,会有大佬相助. 在github上面可以找到很多R的扩展包,如果自己额修改被接受,那 ...

  5. R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...

  6. R语言函数总结(转)

    R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字. 基本命令要么是表达 ...

  7. r语言 函数

    R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能.但是初学者往往认为编写R函数十分困难,或者难以理解.这里对如何编写R函数进行简要的介绍. ...

  8. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

  9. 【转】R语言函数总结

    原博: R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头, ...

随机推荐

  1. linux free命令下 cached占用很大

    # 背景 使用free -h命令,展示如下: # 解决方法 先执行sync命令,同步数据 然后执行 echo 1 > /proc/sys/vm/drop_caches echo 2 > / ...

  2. leetcode 回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向 ...

  3. RoadFlow ASP.NET Core工作流配置文件说明

    工作流配置文件及说明如下: { "Logging": { "LogLevel": { "Default": "Warning&qu ...

  4. .NET Core调用WCF的最佳实践

    现在.NET Core貌似很火,与其他.NET开发者交流不说上几句.NET Core都感觉自己落伍了一样.但是冷静背后我们要也看到.NET Core目前还有太多不足,别的不多说,与自家的服务框架WCF ...

  5. ASP.NET WebAPI 测试文档 (Swagger)

    ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...

  6. WinForm 窗体应用程序(初步)之三

    进程: 进程,简单的说,就是让你的程序启动另一个程序. 1.Process.Start("calc");//启动计算器 弊端:只认识系统自带的程序,如果写错系统会崩溃. 2. // ...

  7. XHTML与HTML、HTML5的区别

    XHTML与HTML最主要的区别 XHTML 元素必须被正确地嵌套. XHTML 元素必须被关闭. XHTML标签名必须用小写字母. XHTML 文档必须拥有根元素. HTML5 HTML5是很有野心 ...

  8. django系列8.4--django中间件的可应用案例, 限制请求次数与时间

    应用案例 1.做IP访问频率限制 某些IP访问服务器的频率过高,进行拦截, 比如每分钟不能超过20次 2.URL访问过滤 如果用户访问的是login视图,就允许请求 如果访问其他视图, 需要检测是不是 ...

  9. Verify the Developer App certificate for your account is trusted on your device.

    1.报错内容 Could not launch "CH5203" Verify the Developer App certificate for your account is ...

  10. 3D-2D:PnP

    PnP(Perspective-n-Point):当知道n个3D空间点及其投影位置时,估计相机位姿. 2D-2D的对极几何方法需要八个或八个以上的点对(以八点法为例),且存在着初始化.纯旋转和尺度的问 ...