2015-11-20 29 views
-1

使用dplyr過濾器,我有以下功能:在功能

library(dplyr) 

filter <- function(aNumber) { 

    x <- as.numeric(aNumber) 

    # create df 
    num <- c(2,3,4) 
    tekst <- c("part1", "part2", "part3") 
    df2 <- data.frame(num,tekst) 

    #filter with parameter 
    df2 <- filter(df, num == x) 

} 

如果我嘗試使用過濾器來運行(2)它不過trows錯誤。我得到:

Error in filter(df, num == x) : unused argument (num == x) 

爲什麼我得到這個錯誤的任何想法?我沒有得到它....

+0

1.過濾器已經是一個功能,不要覆蓋它。您似乎創建了一個過濾器函數,它調用(dplyrs?)過濾器。所以,在你的函數中沒有參數'num'(只有argument'aNumber)。 – Heroka

+0

此外,爲什麼在函數中使用dplyr過濾器時,df [num == x,]也起作用?順便說一句df從哪裏來?錯字? – phiver

回答

3

你叫你的函數過濾器,所以我會想象你的函數的最後一行是遞歸調用自己。你可以用

df2 <- dplyr::filter(df, num == x) 

無論如何,你應該重新命名你的函數。嘗試選擇不會與R中的函數名稱(或您導入的包中)衝突的函數名稱。

+0

重命名的功能是更好的做法。 – Heroka

+0

我同意。編輯我的答案以反映這一點。 – tomr

+0

@tomr感謝您的反饋。我試了一下,但後來我得到以下錯誤:錯誤:不正確的長度(3),期待:9.它是否適合你?另外,當我將我的函數重命名爲filter_it時,我仍然得到一個錯誤 –