使用 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’
注意答案本身,但是示例的更简单版本。
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