首页 > 解决方案 > 除了一个函数加载一个包

问题描述

除了一个功能外,我想加载整个包。

我看到了诸如如何仅从包中加载特定功能之类的解决方法, 但这并不能满足我的全部需求。

具体问题是在 MASS 和 tidyverse 包中使用加载 select() 函数,但我想要一个更通用的解决方案。

谢谢你。

标签: r

解决方案


有三种不错的方法可以做到这一点,难度增加:

1.conflicted

它会检查名称冲突,并会通过抛出错误来阻止您使用掩码或掩码函数。但是您可以声明一个会话范围的首选项,例如:

conflict_prefer("filter", "dplyr")
#> [conflicted] Will prefer dplyr::filter over any other package

在 Github 上发生冲突

2.import

它允许您从包中显式导入特定功能(如果您愿意,可以给它们一个自定义名称)

import::from(ggplot2, g = ggplot, aes, geom_point)
g(iris, aes(Petal.Width, Petal.Length)) + geom_point()

在 Github 上导入

3.modules

它为您提供了一种 Python 式的方式来导入模块(编写为 R 源文件)和库,以及一种更具凝聚力的方式。好的(但先进的)事情是模块,如果它们有子组,可以部分加载,例如str = import('tools/strings'). 但是,这不适用于包,因为它们是作为整体编写的。modules 在编码指南方面有一些优势,但会迫使您编写:

dplyr = import_package('dplyr')
cars %>% dplyr$filter(speed > 15)

Github 上的模块


推荐阅读