我在工作时加载了十几个软件包,其中大部分是 tidyverse,我足够信任它可以管理它们与基础 R 的冲突。
因此,我想在加载它们时消除预期的冲突警告。
正如读到的?library
并理解为https://stackoverflow.com/a/62384440/3888000 https://stackoverflow.com/a/62384440/3888000这本身就引用了官方的说法R-blog https://blog.r-project.org/2019/03/19/managing-search-path-conflicts/),我尝试使用mask.ok
论点,要么在library()
or in options()
.
然而,这似乎并没有按预期工作:
Sys.setenv(LANGUAGE="en")
options(conflicts.policy="depends.ok")
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
Created on 2022-07-01 by the reprex package https://reprex.tidyverse.org (v2.0.1)
我还尝试了很多其他选择,但都没有成功。这是卸载和重新加载的测试代码lubridate
有不同的设置。它可以运行,但警告仍然存在。
f = function(mask.ok=NULL){
detach("package:lubridate", unload=TRUE)
if(is.null(mask.ok)) library(lubridate)
else library(lubridate, mask.ok=x)
}
f("base")
f(list(base=TRUE))
options(conflicts.policy=list(can.mask="base"))
f()
options(conflicts.policy=list(can.mask=list(base=TRUE)))
f()
conflictRules("lubridate", mask.ok="base")
f()
options(conflicts.policy = list(error = TRUE,
generics.ok = TRUE,
can.mask = c("base", "methods", "utils",
"grDevices", "graphics",
"stats"),
depends.ok = TRUE))
f()
只有这个有效,但我想它也会消除意外的警告:
detach("package:lubridate", unload=TRUE)
options(conflicts.policy=list(warn=FALSE))
library(lubridate)
我这样做错了吗?