2017-05-20 28 views
0

我想用R中的過濾函數來計算移動平均值,但看起來這個函數由於與dplyr包衝突而不起作用。 我試過在應用dplyr之後應用庫「base」和「stats」,以便我期望過濾器函數以某種方式再次可用, 但仍顯示消息「There is no C_cfilter」並且不起作用。我想弄清楚如何解決這個問題。過濾功能不似乎和dplyr衝突

回答

1

我們需要使用::,因爲它是由dplyrfilter

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 

所以包,所有這些功能沒有致電說會有一些錯誤

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

效果0

但效果會在那裏等不同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 
+1

你的答案是完美的多。非常感謝。 – HQMA

+0

@HQMA感謝您的評論。你也可以勾選[here](http://stackoverflow.com/help/someone-answers) – akrun