
R语言函数
函数是一个组织在一起的一组以执行特定任务的语句。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
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
Python HTTP 请求工具对比:urllib.request 与 requests 的核心差异与选择指南 在 Python 处理 HTTP 请求(如接口调用、数据爬取 ...
2025-09-12解决 pd.read_csv 读取长浮点数据的科学计数法问题 为帮助 Python 数据从业者解决pd.read_csv读取长浮点数据时的科学计数法问题 ...
2025-09-12CDA 数据分析师:业务数据分析步骤的落地者与价值优化者 业务数据分析是企业解决日常运营问题、提升执行效率的核心手段,其价值 ...
2025-09-12用 SQL 验证业务逻辑:从规则拆解到数据把关的实战指南 在业务系统落地过程中,“业务逻辑” 是连接 “需求设计” 与 “用户体验 ...
2025-09-11塔吉特百货孕妇营销案例:数据驱动下的精准零售革命与启示 在零售行业 “流量红利见顶” 的当下,精准营销成为企业突围的核心方 ...
2025-09-11CDA 数据分析师与战略 / 业务数据分析:概念辨析与协同价值 在数据驱动决策的体系中,“战略数据分析”“业务数据分析” 是企业 ...
2025-09-11Excel 数据聚类分析:从操作实践到业务价值挖掘 在数据分析场景中,聚类分析作为 “无监督分组” 的核心工具,能从杂乱数据中挖 ...
2025-09-10统计模型的核心目的:从数据解读到决策支撑的价值导向 统计模型作为数据分析的核心工具,并非简单的 “公式堆砌”,而是围绕特定 ...
2025-09-10CDA 数据分析师:商业数据分析实践的落地者与价值创造者 商业数据分析的价值,最终要在 “实践” 中体现 —— 脱离业务场景的分 ...
2025-09-10机器学习解决实际问题的核心关键:从业务到落地的全流程解析 在人工智能技术落地的浪潮中,机器学习作为核心工具,已广泛应用于 ...
2025-09-09SPSS 编码状态区域中 Unicode 的功能与价值解析 在 SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案 ...
2025-09-09CDA 数据分析师:驾驭商业数据分析流程的核心力量 在商业决策从 “经验驱动” 向 “数据驱动” 转型的过程中,商业数据分析总体 ...
2025-09-09R 语言:数据科学与科研领域的核心工具及优势解析 一、引言 在数据驱动决策的时代,无论是科研人员验证实验假设(如前文中的 T ...
2025-09-08T 检验在假设检验中的应用与实践 一、引言 在科研数据分析、医学实验验证、经济指标对比等领域,常常需要判断 “样本间的差异是 ...
2025-09-08在商业竞争日益激烈的当下,“用数据说话” 已从企业的 “加分项” 变为 “生存必需”。然而,零散的数据分析无法持续为业务赋能 ...
2025-09-08随机森林算法的核心特点:原理、优势与应用解析 在机器学习领域,随机森林(Random Forest)作为集成学习(Ensemble Learning) ...
2025-09-05Excel 区域名定义:从基础到进阶的高效应用指南 在 Excel 数据处理中,频繁引用单元格区域(如A2:A100、B3:D20)不仅容易出错, ...
2025-09-05CDA 数据分析师:以六大分析方法构建数据驱动业务的核心能力 在数据驱动决策成为企业共识的当下,CDA(Certified Data Analyst) ...
2025-09-05SQL 日期截取:从基础方法到业务实战的全维度解析 在数据处理与业务分析中,日期数据是连接 “业务行为” 与 “时间维度” 的核 ...
2025-09-04在卷积神经网络(CNN)的发展历程中,解决 “梯度消失”“特征复用不足”“模型参数冗余” 一直是核心命题。2017 年提出的密集连 ...
2025-09-04