从[包]导入R中的[功能]

最大功率

在Python或R中使用数据时,我们通常会加载几个包。在某些情况下,两个包(例如foobar)可能每个都包含某个函数(例如do_stuff)。

在Python中进行管理以防止歧义或意外的方式如下:

from foo import do_stuff
from bar import other_function    # (does not load/import do_stuff() from bar)

在R中,我看到的所有代码都只导入带有多个library(package_name)语句的整个程序包我认为这将导致很难捕获的错误。例如,请参阅重新排序因数,根据装入的包,给出不同的结果实际上,即使“没有屏蔽,因为reorder.factor在基数中不存在”,也会发生这种情况。

我希望这个问题的一般答案像from package import function上面代码一样,但事实并非如此。实际上,被接受的(且唯一的)答案仅说明了问题存在的原因(而不是低估该贡献)。在答案的注释中提供了一种解决方法,但是该解决方法特定于该特定功能(reorder)。

有什么通用的方法可以仅从R中的特定程序包中导入特定功能?这样一来,我就可以对代码中所有函数的调用来自何处进行明确和明确的确定,并确保它们按我认为的方式工作?

安德鲁·布雷扎(AndrewBrēza)

您可以使用该package::function()结构明确地告诉R应该将哪个包用于给定的函数您甚至可以使用它来调用尚未加载的包中的函数library

library(dplyr) # Has a function called filter()
library(plyr) # Also has a filter() function

dplyr::filter(foo)
plyr::filter(bar)

如果要确保将代码混乱的可能性降到最低,我强烈建议您使用该conflicted软件包,该软件包将强制您为所有歧义函数调用明确标识该软件包:https : //www.tidyverse.org/articles/ 2018/06 /冲突/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章