【问题标题】:restoring R environment to condition prior the loading of a package [duplicate]在加载包之前将R环境恢复为条件[重复]
【发布时间】:2020-05-02 17:56:58
【问题描述】:

在脚本中我需要加载包 tydiverse 和 gdistance。

gdistance 实际上加载了几个其他的包,并总体屏蔽了 tydiverse 的一些功能(例如选择)。

我试图通过仅在需要时加载 gdistance 并将相关行放在脚本末尾来重新排列脚本。

无论如何,我需要的最后一行之一仍然使用函数 tydiverse::select,然后找不到它并引发错误。

有没有办法在加载 gdistance 包之前制作 R 环境的副本,以便我可以在加载引起问题的包之前恢复环境?

【问题讨论】:

  • 你已经在你的问题中得到了答案——在你的脚本中使用dplyr::select()select()'通用'的家)而不是select()
  • 哦,好吧...不知道 :: 可以做到这一点...我会尝试
  • 太好了,它有效!
  • tidyverse 只是一个用于加载许多其他功能的包,所以你需要dplyr::select,而不是tidyverse::select。如果您在代码中的拼写方式与问题中拼写错误的方式相同,您也会遇到麻烦

标签: r package environment restore detach


【解决方案1】:

这里有一些替代方案:

1) 只需在第二个加载 tidyverse 即可,因为最近加载的名称优先。

library(gdistance)
library(tidyverse)

2) select实际上来自gdistance使用的raster包,而不是gdistance本身。此外,在 R 版本 3.6+ 中,library 有一个 exlude= 参数来排除加载指定名称。因此我们可以编写以下代码来确保select 将引用dplyr。

# needs R 3.6+ 
library(tidyverse)
library(raster, exclude = "select")
library(gdistance)

3) 使用dplyr::select 强制从dplyr 使用select

4) detach gdistance 和 raster 在使用 select 之前,然后将它们重新加载(如果您仍然需要它们)。

library(tidyverse)
library(gdistance)

# ... select refers to select from raster

detach("package:gdistance")
detach("package:raster")

# ... select refers to select from dplyr

library(gdistance)

# ... select refers to select from raster

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2022-01-26
    • 2019-11-02
    • 2016-07-03
    • 2022-08-18
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多