《R语言机器学习:实用案例分析》——1.3节使用函数

简介:

本节书摘来自华章社区《R语言机器学习:实用案例分析》一书中的第1章,第1.3节使用函数,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar),更多章节内容可以访问云栖社区“华章社区”公众号查看

1.3 使用函数
接下来,我们将介绍函数。函数是一种有助于简单地结构化和模块化代码的技术或者方法,它是一组完成特定任务的具体代码行,当你需要执行该任务时可以直接执行该函数,而不需要再次编写它们。在R中,函数仅仅作为另一种数据类型,在需要时可以对函数进行赋值和操作,也可以将其作为参数传递给其他函数。下面将介绍这些内容。
1.3.1 内置函数
R由基础添加包中的许多函数构成,当你安装更多的添加包时,你也将以函数的形式获取更多的功能。在下面的例子中我们将看到一些新的内置函数:

> sqrt(5)
[1] 2.236068
> sqrt(c(1,2,3,4,5,6,7,8,9,10))
[1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751
[8] 2.828427 3.000000 3.162278
> # aggregating functions
> mean(c(1,2,3,4,5,6,7,8,9,10))
[1] 5.5
> median(c(1,2,3,4,5,6,7,8,9,10))
[1] 5.5

你可以从以上例子中看到,像mean、medium和sqrt这样的函数是内置函数。当你启动R时,无论何时都可以直接使用它们,而不必加载任何添加包或显式地定义这些函数。
1.3.2 用户自定义函数
你可以基于你想对数据执行的不同运算和计算来定义自己的函数,并让R按照你需要它们工作的方式来执行这些函数,这是R函数真正强大之处。如下面的例子所示:

square <- function(data){
return (data^2)
}
> square(5)
[1] 25
> square(c(1,2,3,4,5))
[1] 1 4 9 16 25
point <- function(xval, yval){
return (c(x=xval,y=yval))
}
> p1 <- point(5,6)
> p2 <- point(2,3)
>
> p1
x y
> square(c(1,2,3,4,5))
[1] 1 4 9 16 25
point <- function(xval, yval){
return (c(x=xval,y=yval))
}
> p1 <- point(5,6)
> p2 <- point(2,3)
>
> p1
x y
5 6
> p2
x y
2 3

正如我们在前面的代码片段中所看到的,我们可以定义像square一样的函数,使用相同的代码来计算一个数值的平方,甚至一个数值向量的平方。像point这样的函数可以用来表示特定实体,这些实体表示二维坐标空间中的点。现在我们将看到如何一起使用以上这些函数。
1.3.3 以参数形式传递函数
当你定义任何函数时,如果你需要在你的函数中使用其他函数执行一些复杂的计算,你也可以将这些函数作为参数进行传递。下面的例子使用前面定义的square函数来计算两点间的欧几里得距离,它把square函数作为参数进行传递:

> # defining the function
euclidean.distance <- function(point1, point2, square.func){
distance <- sqrt(
as.integer(
square.func(point1['x'] - point2['x'])
) +
as.integer(
square.func(point1['y'] - point2['y'])
)
)
return (c(distance=distance))
}
> # executing the function, passing square as argument
> euclidean.distance(point1 = p1, point2 = p2, square.func = square)
distance
4.242641
> euclidean.distance(point1 = p2, point2 = p1, square.func = square)
distance
4.242641
> euclidean.distance(point1 = point(10, 3), point2 = point(-4, 8),
square.func = square)
distance
14.86607

因此,你可以看到,使用函数你可以定义一次一个特定函数,你需要执行多少次就执行多少次。

相关文章
|
2月前
|
机器学习/深度学习 资源调度
【机器学习】归一化目的分析
【1月更文挑战第27天】【机器学习】归一化目的分析
|
2月前
|
机器学习/深度学习
【机器学习】误差分析
【1月更文挑战第23天】【机器学习】误差分析
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
【机器学习实训项目】黑色星期五画像分析
【机器学习实训项目】黑色星期五画像分析
45 0
|
4月前
|
机器学习/深度学习 算法
20 机器学习 - Lineage逻辑回归算法分类案例
20 机器学习 - Lineage逻辑回归算法分类案例
29 0
|
3月前
|
机器学习/深度学习 数据可视化 Python
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
55 0
|
7天前
|
机器学习/深度学习 算法 数据可视化
机器学习——主成分分析(PCA)
机器学习——主成分分析(PCA)
17 0
|
4月前
|
机器学习/深度学习 Python
18 机器学习 - 决策树分类器案例
18 机器学习 - 决策树分类器案例
57 0
|
10天前
|
机器学习/深度学习 数据采集 自然语言处理
编写员工聊天监控软件的机器学习模块:Scikit-learn在行为分析中的应用
随着企业对员工行为监控的需求增加,开发一种能够自动分析员工聊天内容并检测异常行为的软件变得愈发重要。本文介绍了如何使用机器学习模块Scikit-learn来构建这样一个模块,并将其嵌入到员工聊天监控软件中。
41 3
|
25天前
|
机器学习/深度学习 自然语言处理 JavaScript
GEE机器学习——最大熵分类器案例分析(JavaScript和python代码)
GEE机器学习——最大熵分类器案例分析(JavaScript和python代码)
16 0
|
27天前
|
监控 安全 数据可视化
使用R语言分析公司监控员工软件的数据趋势
在当今数字化时代,公司日益重视对员工活动的监控和分析。监控员工在工作时间内使用的软件可以提供宝贵的洞察,帮助企业了解员工的工作习惯、生产效率和安全风险。本文将介绍如何使用R语言对公司监控员工软件的数据趋势进行分析,并探讨如何将监控到的数据自动提交到网站
70 0