我想加载除了一个函数之外的整个包。
我看到了解决方法,例如如何从包中仅加载特定函数 ,但这并不能满足我的全部需求。
具体问题是使用加载 MASS 和 tidyverse 包中的 select() 函数,但我想要一个更通用的解决方案。
谢谢。
有三种很好的方法可以做到这一点,但难度不断增加:
conflicted它会检查名称冲突,并会阻止您使用屏蔽或屏蔽函数,如果这样做,则会抛出错误。但您可以声明会话范围的首选项,例如:
conflict_prefer("filter", "dplyr")
#> [conflicted] Will prefer dplyr::filter over any other package
Run Code Online (Sandbox Code Playgroud)
import它允许您从包中显式导入特定函数(如果您愿意,还可以给它们一个自定义名称)
import::from(ggplot2, g = ggplot, aes, geom_point)
g(iris, aes(Petal.Width, Petal.Length)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
modules它为您提供了一种类似 Python 的方式来导入模块(编写为 R 源文件)和库,以及一种更具凝聚力的方式。好的(但先进的)事情是模块,如果它们有子组,可以部分加载,例如str = import('tools/strings')。然而,这不适用于包,因为它们是作为整体编写的。模块在编码指南方面有一些优势,但会迫使您编写:
dplyr = import_package('dplyr')
cars %>% dplyr$filter(speed > 15)
Run Code Online (Sandbox Code Playgroud)