2014-11-14 15 views
8

Ở nơi làm việc, tôi có máy tính chạy Windows 7 R 3.1.2.Bộ lọc r dplyr không che giấu bộ lọc cơ sở?

Tôi có một tệp có tên là packages.R. Trong tệp của tôi, tôi có đoạn mã sau:

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

My .Rprofile chứa một hàm gọi là.

.First <- function() { 
    source("R/packages.R") 
} 

Khi tôi tải R, tôi nhận được kết quả như sau:

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 

Nếu bạn nhìn vào này một cách cẩn thận, bạn sẽ thấy bộ lọc từ số liệu thống kê không đeo mặt nạ.

Nhưng, nếu tôi thực hiện chính xác thiết lập của mình và nhận xét câu lệnh thư viện (dplyr) trong gói.R, hãy lưu tệp và khởi động lại R rồi theo cách thủ công. . . . như trong loại nó bằng tay. . . .

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 

Bây giờ, mặt nạ gói :: số liệu thống kê.

Tôi không hiểu. Tôi cần phải sử dụng lệnh lọc từ dplyr rất nhiều cho dự án này và tôi không muốn gõ dplyr :: lọc để sử dụng nó. Ai đó có thể vui lòng giúp tâm trí yếu đuối của tôi hiểu tại sao điều này là hành xử theo cách này? Tôi đã thử bắt đầu R trong RStudio và ESS, và tôi có được hành vi giống hệt nhau trong cả hai. Tôi cũng đã cố gắng di chuyển dplyr vào cuối của các tập tin packages.R, không có sự khác biệt cho các kết quả. Tôi chỉ muốn che dấu số liệu thống kê :: bộ lọc. Cảm ơn.

+1

Khi bạn tải thư viện .RProfile chúng được đính kèm rất sớm trong quá trình khởi động R, trước khi gói thống kê được đính kèm. Một cách khác, bạn đang đính kèm dplyr sau khi số liệu thống kê đã được tải. Tôi đã thấy Hadley khuyên bạn nên chống tải các gói trong .RProfile vì lý do này (sự khác biệt trong thứ tự tải gói). – joran

+2

... Tôi cho rằng bạn có thể thử thêm 'thư viện (số liệu thống kê)' vào đầu tập lệnh mà bạn đang tìm nguồn trong .RProfile. – joran

+0

Đối với cười và cười khúc khích, tôi đã thêm thư viện (số liệu thống kê) vào tệp package.R của tôi. Nhưng, điều đó có vẻ như một điều phức tạp không cần thiết phải làm. Tôi đoán tôi sẽ kéo hai lệnh đó ra khỏi tệp .irst() của tôi và di chuyển chúng đến trước tất cả các tệp phân tích của tôi. Tôi ghét có các mẫu có đầy đủ những điều tương tự hơn và hơn và hơn nữa, nhưng tôi đoán trong trường hợp này, nó là lựa chọn tốt hơn. – Choens

Trả lời

10

Khi bạn tải thư viện trong .RProfile chúng được đính kèm rất sớm trong quy trình khởi động R, trước khi đính kèm gói số liệu thống kê. Cách khác, bạn đang đính kèm dplyr sau khi số liệu thống kê đã được tải. Tôi đã nhìn thấy Hadley khuyên bạn nên chống lại tải gói trong .RProfile vì lý do này (sự khác biệt trong thứ tự tải gói), mặc dù cá nhân tôi không có cảm giác mạnh mẽ về nó. (Các chi tiết của quá trình khởi động R được mô tả trong ?Startup.)

Một giải pháp khả thi là chỉ cần thêm library(stats) như cuộc gọi thư viện đầu tiên trong kịch bản của bạn, trước khi tải dplyr.

Tùy chọn khác (dài hạn) để tránh các loại vấn đề này trên toàn cầu hơn là chuyển luồng công việc của bạn từ "tập hợp lớn tập lệnh" sang một hoặc nhiều gói.

0

Tôi đã có chính xác cùng một vấn đề và nó rất khó chịu. Nếu bạn muốn chặn các thông điệp cảnh báo như tôi đã làm :-), bạn có thể tải với library(dplyr, warn.conflicts = FALSE).

Các vấn đề liên quan