在工作中,我有一台运行R 3.1.2的Windows 7计算机。R dplyr过滤器不屏蔽基本过滤器?
我有一个名为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
如果在此仔细看,你会看到从统计过滤器没有被屏蔽。
但是,如果我采用完全相同的设置,并注释掉package.R中的库(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启动过程的很早时刻附加到stats包之前。另一种方式是,在统计信息已经加载完成之后,您将附加dplyr。我见过Hadley建议不要在.RP档中加载包(因为这个原因)(包加载顺序的差异)。 – joran 2014-11-14 17:03:03
...我想你可以尝试在你正在采购.RProfile的脚本开始时加入'library(stats)'。 – joran 2014-11-14 17:05:34
对于咧嘴笑声,我将library(stats)添加到我的packages.R文件中。但是,这似乎是一个不必要的复杂的事情必须做。我想我会将这两个命令从我的.First()中移出并将它们移到我所有分析文件的前面。我讨厌有一遍又一遍都充满了同样的事情的模板,但我想在这种情况下,这是更好的选择。 – Choens 2014-11-14 17:18:03