免费试用
banner
行业资讯>大数据技术与应用>R语言访问包中函数

R语言入门秘录25/25:访问包中的函数

作者: afenxi来源: afenxi时间:2017-03-08 12:57:520

摘要:数据分析网整理自tbkken的《R语言入门25招》,一招招技能带你走进R语言。

问题

某个包已经安装好了,可能是安装R时就安装好了的标准包,或者是自己下载的包。如果直接在R中使用包中的函数,R会告诉你,它找不到这个函数。

解决方案

用library函数或者require函数将包加载到R中:

> library(packagename) 讨论

R本身自带了很多包,但并不是所有的包都会在R启动时就自定加载。类似的,可以从CRAN上下载和安装所需的包,但这些包也不会自动的加载到R中。例如,MASS包是R自带的,但如果直接使用其中的lda函数就会遇到这个问题:

> lda(x) Error: could not find function "lda" #错误:找不到“lda”函数

R会报错,说它在已加载到内存的包中找不到lda函数。

在用library函数或者require函数时,R就会将相应的包加载到内存中,你就可以使用其中的函数、数据等各种东西:

> lda(f ~ x + y) Error: could not find function "lda" > library(MASS) > lda(f ~ x + y) Call: lda(f ~ x + y) Prior probabilities of groups: . . (省略) .

在调用library之前,R无法识别这个函数名。在调用之后,就可以使用包中的东西,也就可以调用lda函数了。

要注意,不需要将包名称放在引号中。

require函数几乎跟library一模一样,但在编写脚本时它有两个有用的特性。如果包加载成功,它会返回TRUE,否则就会返回FALSE。如果包加载失败,require会发出警告,而library会报错。

这两个函数都一个共同的关键特性:他们不会加载已加载的包,所以调用这两个函数将同一个包加载两次并没有什么害处。这在编写脚本的时候很有用。在脚本中可以加载各种所需的包,而无需考虑这些包是否已经被加载。

detach函数可以将已加载的包卸载(unload):

> detach(package:MASS)

必须要明确地指定包名称,例如package:MASS。

如果某个包的函数跟搜索路径中靠后的某个同名函数发生冲突,就需要将其卸载。在发生这种冲突时,高优先级的函数就会掩盖低优先级的函数。R在找到高优先级的函数后就会停止搜索,你也就“看”不到低优先级的函数了。所以,这时候如果要使用低优先级的函数,就要把高优先级的包卸载。

扩展阅读

关于搜索路径,详见search函数。

banner
看过还想看
可能还想看
热点推荐
Yonghong的价值观:以卓越的数据技术为客户创造价值,实现客户成功。
免费试用