R语言多次调用library(include.only=…)无法加载新函数的解决办法咨询
无需重新加载R包按需加载函数的方法
当R包已经通过include.only部分加载后,再次调用library(..., include.only=...)不会生效——因为该参数仅在第一次加载包时起作用,后续调用library不会修改已导入到全局环境的函数集合。以下是几种无需卸载重载包的解决方案:
方法1:直接使用包名::函数名调用
如果只是偶尔需要调用未加载的函数,直接用包名::函数名的方式调用最简便,无需将函数导入全局环境:
> library(stringr, include.only = 'str_length') > str_length('a') [1] 1 > # 直接调用未加载的str_sub > stringr::str_sub('a', 1, 1) [1] "a"
方法2:用getFromNamespace提取函数到全局环境
如果需要后续直接使用函数名调用,可以用getFromNamespace将指定函数从包的命名空间提取到当前环境:
> library(stringr, include.only = 'str_length') > str_length('a') [1] 1 > # 提取str_sub到全局环境 > str_sub <- getFromNamespace("str_sub", "stringr") > str_sub('a', 1, 1) [1] "a"
方法3:用attach追加加载指定函数
可以使用attach函数,从已加载的包中追加导入指定函数到全局环境:
> library(stringr, include.only = 'str_length') > str_length('a') [1] 1 > # 追加加载str_sub > attach(pos = 1, name = "stringr", include.only = "str_sub") > str_sub('a', 1, 1) [1] "a"
注意:pos参数指定附加位置,设置为1可确保函数在全局环境直接可访问,避免环境优先级冲突。
内容的提问来源于stack exchange,提问作者simplyPTA
相关产品推荐
相关产品推荐

