在Python中,我们有机会从库中导入某个函数,并使用命令“import function 从库 作为smth 。”我们在R中有类似的东西? 我知道我们可以像“ library :: function ()”那样调用函数,我的问题主要是指“as”部分。
答案 0 :(得分:3)
在R中执行此操作并不常见,也不是必需的。赋值运算符<-
可用于为现有函数指定新名称。例如,可以定义一个与lubridate,year()
函数完全相同的函数:
asYear <- lubridate::year
有人可能会说,通过这样做,year()
功能已被&#34;导入&#34;来自lubridate
包,现在称为asYear()
。事实上,新功能也是如此(这并不奇怪,因为 相同):
asYear(Sys.Date())
#[1] 2016
因此可以构建一个类似于&#34;从包导入为&#34;,但这样做并不是一个好主意。以下是我能想到的几个原因:
?asYear
或?lubridate::year
相比,library(lubridate); help(year)
无法正常工作。可能有更多原因,但我希望这足以阻止使用这种结构。不同的编程语言具有不同的特性,作为程序员,有必要适应它们。 Python中常见的东西在R中可能很尴尬,反之亦然。
在R中处理这种标准情况的一种简单而常用的方法是使用library()
加载包含所请求函数的包的整个命名空间:
library (lubridate)
year(Sys.Date())
但是,应该知道可能的命名空间冲突,特别是如果同时加载了许多库。可以在不同的包中使用相同的名称定义不同的功能。其众所周知的示例是lag()
和dplyr
包中的stats
函数的对比实现。
在这种情况下,可以使用双冒号运算符::
来解析应该解决的命名空间。这类似于使用&#34;来自&#34;在&#34; import&#34;的情况下,但每次调用函数时都需要这样的规范。
lubridate::year(Sys.Date())
#[1] 2016