过滤功能不会和似乎与dplyr冲突

时间:2017-05-20 07:14:50

标签: r dplyr

我想在R中使用过滤函数计算移动平均值,但由于与dplyr包的冲突,此函数似乎无效。 我在应用dplyr之后尝试应用库“base”和“stats”,这样我希望过滤器功能能够以某种方式再次可用,  但它仍然显示消息“没有C_cfilter”并且不起作用。我想弄清楚如何解决这个问题。

1 个答案:

答案 0 :(得分:3)

我们需要使用::,因为它被dplyr filter

屏蔽了
stats::filter

加载包dplyr时的消息告诉了掩码函数

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

因此,所有这些函数都没有调用packagename::会有一些错误

filter(1:10, rep(1, 3))
  

UseMethod(“filter_”)中的错误:“filter_”没有适用的方法   应用于类“c('整数','数字')”

的对象
stats::filter(1:10, rep(1, 3))
#Time Series:
#Start = 1 
#End = 10 
#Frequency = 1 
#[1] NA  6  9 12 15 18 21 24 27 NA

或者会改变行为

lag(1:10)
#[1] NA  1  2  3  4  5  6  7  8  9
stats::lag(1:10)
#[1]  1  2  3  4  5  6  7  8  9 10 
#attr(,"tsp")
#[1] 0 9 1

或可能对特定class

无效
setdiff(1:5, 1:3)
#[1] 4 5

base::setdiff(1:5, 1:3)
#[1] 4 5

但效果将适用于不同的class

setdiff(data.frame(col1 = 1:5), data.frame(col1 = 1:3))
#  col1
#1    4
#2    5
base::setdiff(data.frame(col1 = 1:5), data.frame(col1 = 1:3))
#  col1
#1    1
#2    2
#3    3
#4    4
#5    5