R语言机器学习入门——13

148 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

函数介绍——自定义函数

编写函数就是为了减少重复代码的书写,从而让脚本更加简洁高效,增加可读性

在R中,如果直接写函数不加括号,就会显示函数的源代码

一个完整的R函数需要包括函数名称、函数声明、函数参数、函数体

函数名称:函数的命名最好和函数的功能相关,可以使字母和数字的组合,但必须是字母开头

函数声明:利用function函数来声明,用来告诉R这个东西是函数

下面我们来编写一个简单的R函数,这个函数的功能是计算偏度和峰度值:

偏度(skewness),是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征

峰度(peakness; kurtosis),又称峰态系数,表征概率密度分布曲线在平均值处峰值高低的特征数

第一个选项参数x就是要计算的数据,是一个数值向量,第二个选项是na.omit,用于删除缺失值,默认取值为False,然后是大括号,用于写函数的主体

然后是逻辑判断:

如果有缺失值,那么x只取不包含缺失值的x的值,!是取反的意思,is.na()是取数据集中的缺失值。

然后我们定义m为数值向量x的平均值,n为数值向量x的长度,s为数值向量x的标准差

然后写下计算skew(偏度)的公式:

skew <- sum((x-m^3/s^3))/n

计算峰度的公式:

kurt <- sum((x-m^3/s^4))/n-3

最后使用一个return函数返回函数的值

return(c(n=m,mean=n,stdev=s,skew=skew,kurtosis=kurt))}

这里我们要输出的是向量的个数n,平均值m,标准差s,偏度值和峰度值

然后可以使用一下这个函数:

下面来介绍一下R中的循环控制函数:

函数内部通过循环实现向量化操作,循环的三部分:条件判断,是真是假,用于循环执行的结构,表达式

首先看一下for循环:

for(i in 1:10){print("hello,world")}

然后是while循环:

i=1;while(i<=10){print("hello,world");i=i+1;}

分号;表示一个语句完结

i=1;while(i<=10){print("hello,world");i=i+2;}

i=i+2时语句会少一半

if else的结构

score=70;if (score>60){print("passed")} else {print("failed")}

还可以简写ifelse

ifelse(score>60,print("passed"),print("failed")

这节课可以参考用来写d-dematel 函数

下一篇文章将会是项目实操——数据分析实战,通过实际案例进行数据分析,了解数据分析的实质