gpt4 book ai didi

R dplyr 过滤器没有屏蔽基础过滤器?

转载 作者:行者123 更新时间:2023-12-04 00:54:19 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What does "The following object is masked from 'package:xxx'" mean?

(3 个回答)


5年前关闭。




在工作中,我有一台运行 R 3.1.2 的 Windows 7 计算机。

我有一个名为 packages.R 的文件。在我的这个文件中,我有以下代码:

library(dplyr)
library(sqlutils)
library(RODBC)

我的 .Rprofile 包含一个名为 .First 的函数。
.First <- function() {
source("R/packages.R")
}

当我加载 R 时,我得到以下输出:
Loading required package: roxygen2
Loading required package: stringr
Loading required package: DBI

Attaching package: 'dplyr'

The following objects are masked from 'package:base':

intersect, setdiff, setequal, union

如果您仔细查看,您会看到 stats 中的过滤器没有被屏蔽。

但是,如果我采用完全相同的设置,并注释掉 packages.R 中的 library(dplyr) 语句,请保存文件,然后重新启动 R,然后手动。 . . .就像手动输入一样。 . . .
library(dplyr)

Attaching package: 'dplyr'

The following object is masked from 'package:stats':

filter

The following objects are masked from 'package:base':

intersect, setdiff, setequal, union

现在,它屏蔽了 package::stats。

我不明白。我需要在这个项目中大量使用 dplyr 的 filter 命令,我不想输入 dplyr::filter 来使用它。有人可以帮助我软弱的头脑理解为什么会这样吗?我曾尝试在 RStudio 和 ESS 中启动 R,并且在两者中都得到了完全相同的行为。我还尝试将 dplyr 移动到 packages.R 文件的末尾,结果没有区别。我只想屏蔽 stats::filter。谢谢。

最佳答案

当您在 .RProfile 中加载库时在 之前,它们很早就在 R 启动过程中被连接上了。统计 包已附加。另一种方式,您正在附加 dplyr 统计 已经加载。您可以通过键入 ?Startup 了解 R 的启动过程。 .那里说:

Note that when the site and user profile files are sourced only the base package is loaded, so objects in other packages need to be referred to by e.g. utils::dump.frames or after explicitly loading the package concerned.



我看到 Hadley 建议不要在 .RProfile 中加载包出于这个原因,即包加载顺序的差异,尽管我个人对此没有强烈的感觉。

一种可能的解决方案是简单地添加 library(stats)在加载 之前,作为脚本中的第一个库调用dplyr .

另一个(长期)更全面地避免此类问题的选项是将您的工作流从“大量脚本”转换为一个或多个包。

关于R dplyr 过滤器没有屏蔽基础过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com