dbplyr 检测到循环命名空间依赖:它是否正确卸载?

问题描述 投票:0回答:1

使用 dbplyr 后我无法卸载 tidyverse 命名空间。

我在 dbplyr 中发现错误了吗?卸载正确吗?

library(tidyverse)

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
DBI::dbDisconnect(con)

unloadNamespace("tidylog")
unloadNamespace("tidyr")
unloadNamespace("purrr")
unloadNamespace("tidyverse")
unloadNamespace("ggplot2")
unloadNamespace("readr")
unloadNamespace("dbplyr")
unloadNamespace("dplyr")
unloadNamespace("tibble")
unloadNamespace("stringr")
unloadNamespace("forcats")
unloadNamespace("magrittr")

library(tidyverse)

结果:

Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
  cyclic namespace dependency detected when loading ‘dplyr’, already loading ‘dbplyr’, ‘dplyr’, ‘ggplot2’
r namespaces tidyverse dbplyr unload
1个回答
0
投票

注意答案本身,但是示例的更简单版本。

dplyr
dbplyr
之间的关系绝对令人困惑。例如,
copy_to()
dplyr
重新导出,但其他函数(例如,
copy_inline()
)则不会。
dbplyr
的某些方面表明它是一个用户不应该考虑的幕后包,但有时用户需要调用它(例如,获取
window_order()
window_frame()
)。

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
DBI::dbDisconnect(con)

unloadNamespace("dbplyr")
unloadNamespace("dplyr")

library(dplyr)
#> Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
#>   cyclic namespace dependency detected when loading 'dplyr', already loading 'dbplyr', 'dplyr'
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

创建于 2024 年 12 月 29 日,使用 reprex v2.1.1

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.