评论

R语言学习笔记(三)——实用的内置函数

原标题:R语言学习笔记(三)——实用的内置函数

导语:前两期小编给大家介绍了R语言和Rstudio的安装(),以及一个非常有用的R包dplyr(R语言学习笔记(二))。此外,作为R语言的初学者也应该掌握一些基本函数,所以本期给大家介绍一些R中非常实用的内置函数,希望对大家有所帮助。

01内置数据集

R语言中有很多内置的数据集,这些数据集存储在datasets这个包中,包含了R中所有的数据类型。R会默认已经加载了这个包。我们可以用data()命令查看R中所有内置的数据集,左边是数据集的名称,右边是数据集的描述。

这里介绍几个十分常用的数据集,mtcars收集了美国32种汽车的11个指标,经常用于ggplot2作图的示例数据;iris是一个非常有名的数据集,收集了3种鸢尾花花瓣和花萼的长宽信息,是数据挖掘中常用的示例文件;state.x77收集了美国50个州的基本信息,是画热图的示例文件。

02内置函数

R中有很多实用的内置函数,这里不做系统的介绍,仅列举一些在数据分析中非常实用的函数。

(1)关于NA

对于一组数据来说,如果出现了缺失值,在R中是不能直接进行统计分析的,好在R中有专门针对缺失值的几个函数,下面举例说明。

向量x中有NA值,看到直接对向量x求平均值结果是不对的,有两种方法可以解决。

第一种是在mean函数中添加na.rm = T参数,也就是计算时先将NA值移除;第二种是先用na.omit()函数移除掉x中的NA值,再计算平均值。

(2)两个向量的关系

数据分析中经常需要找不同组之间的关系,这里有几个常用的函数。

交集(intersect)

并集(union)

匹配(match):返回向量1的元素在向量2中的位置

表示x1的5个元素在x2中的位置分别为NA、NA、1、2、3。这个函数的意义在于生成一个索引向量,在数据框的筛选中会非常实用。

(3)基本统计函数

关于基本的统计函数如平均值、标准差等这里不做系统介绍,这里说几个统计函数的特殊用法。

(a)生成随机数

通常用runif(n, min, max)函数,这个函数生成均匀分布的值,n为个数,min和max分别是最小值和最大值,默认参数为0和1。

(b)生成随机整数

一个最简单的办法是round()和runif()函数连用,其中round()是按照四舍五入取整函数。如果要向上或者向下取整,可以使用ceiling()和floor()函数。

后面几种生成随机向量的方式非常实用,原理就是先用runif()函数生成随机数,然后再用round()函数取整数。基因型数据经常用0,1,2或者-1,0,1表示,我们可以用这种方式模拟基因型数据。

(c)正态分布

用的最多的是rnorm(n, mean, sd)函数,生成n个符合某个正态分布的随机数。用法比较简单,默认的平均值是0,方差是1。

(4) 其他函数

R中还有不少常用的函数,这里仅列举三个。

(a)summary函数

这个函数是一个比较“万金油”的函数,可以单独对向量或者矩阵使用,会给出一些基本的统计量,包括极值、中位数、平均数等等。

在一些统计分析中也经常使用summary()函数,比如下面的线性回归:

Call:

Residuals:

可以看到summary()函数给出了很多统计量,包括残差、截距、显著性等等。

(b)table函数

这个函数看起来不起眼,但很实用,给出一个频率分布表,还是举例说明。

上面给出了向量a的频率分布,但没有包含NA,如果要统计NA的数目,则需要添加参数exclude = NULL。

需要注意的是生成的频率分布也是一张表,如果需要对这个表进行操作,最好转化成数据框。

(c)apply/sapply/tapply/mapply

这是一个函数家族,其实就是为了代替for循环,简化代码,这里只介绍apply和tapply。

apply(x, margin, fun, ...)有3个主要的参数,x通常为数据框,margin参数为1或2, 1表示按行,2表示按列,fun为调用函数。比如按列统计mtcars数据集的平均数。

tapply(x, index, fun, ...)通过index对数据集x进行分组运算,相当于上一期dplyr包中的group_by操作。如我们需要统计iris数据集中不同品种鸢尾花的平均花萼长度。

如果用dplyr则是:

3 自编函数

R中虽然有很多内置函数,但具体分析时有时候需要用户自己编写函数。自编函数中有两个非常重要的思想,循环和递归。关于循环相信接触R的人都十分了解,这里只列举两个递归函数的例子。

(1)斐波那契数列

斐波那契数列本身就是用递归定义的F(n) = F(n-1) + F(n-2),因此非常适合用递归函数实现。

(2)求最大公约数

可见,递归是一种比较高级的编程思想,灵活运用能够极大的化繁为简。

结语:以上就是小编认为R中比较实用的一些内置函数,能力有限总结的肯定不够完全,欢迎大家和小编一起交流R语言学习心得。返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
免费获取
今日搜狐热点
今日推荐