在工作中,我有一臺運行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