2017-05-20 1 views
0

Ich wollte Moving Average mit Filterfunktion in R berechnen, aber es scheint, dass diese Funktion nicht funktioniert wegen Konflikt mit dem dplyr-Paket. Ich habe versucht, Bibliothek "Basis" und "Stats" nach dem Anwenden von dplyr, so dass ich erwartete Filterfunktion irgendwie wieder zur Verfügung stehen, , aber es zeigt immer noch eine Meldung "Es gibt keine C_cfilter" und funktioniert nicht. Ich möchte herausfinden, wie ich dieses Problem lösen kann.Filterfunktion nicht und scheint mit dplyr zu kollidieren

Antwort

1

Wir brauchen :: zu verwenden, wie es durch die dplyrfilter

stats::filter 

Die Meldung maskiert ist, wenn wir das Paket laden dplyr über die Maskierungsfunktionen erzählt

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 

Also, alle diese Funktionen ohne anzurufen packagename:: wird ein Fehler haben

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

Fehler in UseMethod ("filter_"): keine anwendbare Methode für 'filter_' auf ein Objekt der Klasse angewandt "c ('integer', 'numerischen')"

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 

oder hätte Verhalten geändert

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 

oder nicht haben Auswirkungen auf einen bestimmten class

aber die Wirkung wird es für eine andere 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

Ihre Antwort ist mehr als perfekt. Ich danke dir sehr. – HQMA

+0

@HQMA Vielen Dank für die Kommentare. Sie können auch [hier] (http://stackoverflow.com/help/someone-answers) überprüfen – akrun

Verwandte Themen