为了方便大家学习,我已经录制了
配套的视频
,放在了哔哩哔哩(我的B站账号:
阿越就是我),
免费观看
,复制以下网址粘贴到浏览器打开即可:
https://space.bilibili.com/42460432/channel/collectiondetail?sid=3740949
本期目录:
函数
函数
的英文是
function
,所以函数是用来实现特定功能的、由别人整理好的一段代码,通常一个R包会包含多个函数。这就好比一个手机APP可以做多个事情,比如微信可以用来文字聊天、视频聊天、查看订阅号消息等,甚至还可以看直播。
一个R包里面有多个函数,这些函数也可以实现不同的功能。比如
graphics
包里面的两个函数:
plot(1:10,1:10) # 画图
lines(1:10) # 添加一条线
这里的
plot()
就是一个函数,可以实现画图功能。当你运行
plot(1:10,1:10)
之后,它会为你开辟一片空间用于画图,然后把这个图的框架(4条框以及坐标等)给你画出来,然后把点也给你画上去,这就是这个函数的功能(当然它还有其他功能)。
当你接着运行
lines(1:10)
之后,它会给你画一条线,这就是
lines()
这个函数的功能。
当我们在使用某个手机APP时,肯定是要先打开这个APP,然后才能使用它,R包也是如此,
一定要先加载R包,才能使用R包里的函数
。
这个
plot()
函数是
graphics
包里面的,这个R包是R语言自带的(有些自带的不需要加载也能使用),不需要额外安装,使用时也不需要加载(即不需要先
library(graphics)
),
自己安装的R包是需要先加载才能使用里面的函数的
。
比如
ggplot()
函数是属于
ggplot2
这个R包的,这个R包是需要自己安装的,所以在使用前需要先加载才能使用:
# 先加载对应的R包
library(ggplot2)
# 才能使用里面的函数
ggplot()
我经常看到有人把函数当做R包,然后使用
install.packages("")
进行安装,非常错误的做法,比如有一个R包叫
rms
,其中有一个函数叫
lrm
,有的人不明所以,直接使用
install.packages("lrm")
,结果报错:
install.packages("lrm")
将程序包安装入‘C:/Users/liyue/AppData/Local/R/win-library/4.3’
(因为‘lib’没有被指定)
Warning in install.packages :
package ‘lrm’ is not available for this version of R
A version of this package for your version of R might be available elsewhere,
see the ideas at
https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
你要安装的是R包,不是函数,千万要注意,别犯这种低级错误。
参数
每个函数都有特定的
参数
(argument),比如上面的
plot(1:10,1:10)
,其中的
1:10
就是
plot
这个函数的参数,你也可以写成
plot(x = 1:10, y = 1:10)
:
plot(x = 1:10, y = 1:10)
这也是完整的写法,其中的
x
、
y
被称为形式参数(简称
形参
),
1:10
被称为实际参数(简称
实参
)。
形参是函数的作者规定的,这个名字如果你写了,就要写对,不能乱写,必须按照人家的规定来,实参是需要你自己提供的。
如果你写了形参的话,可以不用管参数的顺序:
opar <- par(mfrow=c(1,2))
# 先写x或y都不影响
plot(x = c(2,4,6,8,10), y = 1:5)
plot(y = 1:5, x = c(2,4,6,8,10))
par(opar)
形参是可以省略的,但是省略后要按照作者规定的顺序提供实参,不然就会出问题(初学者建议写上形参),比如:
opar <- par(mfrow=c(1,2))
# 不写形参先后顺序有影响,会默认第一个是x,第二个是y
plot(c(2,4,6,8,10), 1:5)
plot(1:5, c(2,4,6,8,10))
par(opar)
这些参数是有要求的,不按照规定写就会报错。比如:
-
有的参数需要你提供数值型的向量(数据类型会在后面几章介绍)给它,如果你提供的不是数值型向量,那么它就会报错;
-
有的参数不能有
NA
或者缺失值,如果你提供的数据里有
NA
或者缺失值,那么它肯定会报错。
这个东西是很机械的,不可更改,函数的作者规定的,不按照要求写必然报错!
还有一些参数是有默认值的,如果你没有指定,它就会使用默认值。比如:
?t.test
# 其中的mu = 0, paired = FALSE, var.equal = FALSE,
# conf.level = 0.95 都是默认值
如何知道每个参数的具体要求及函数的使用方法呢?我们可以直接查看帮助文档。帮助文档是函数的开发者按照一定的要求写的、能够让使用者快速理解函数用法的文档。
绝大多数R语言中的函数都可以通过
?xxx
或者
help(xxx)
查看函数的帮助文档(自己安装的R包需要先加载),比如:
# 以下两种方法都可以
?lines
# 或者
help("lines")
当你运行上面的代码后,在Rstudio右侧
help
面板中会出现该函数的帮助文档,如下图所示: