2017-06-13 83 views
-2

我想獲得下面將R的dplyr過濾行爲解釋%的%並不表現:的R - dplyr過濾器 - 如預期

df <- data.frame(x = rep('test',3), y = c('service','audio','video')) 

filter(df , y == 'service') 
#result 1 
x  y 
test service 

filter(df , 'service' %in% y) 
#result 2 
x  y 
test service 
test audio 
test video 

我可以得到上述行爲的解釋?我想過濾掉'y'列中的單詞服務。我不明白爲什麼「音頻」和「視頻」這一行也被過濾了。

編輯:我不明白爲什麼我被標記爲有這個問題。我知道'=='和'%in%'之間的區別。一般來說,我不會問'=='和'%in%'之間的區別。我想知道爲什麼我的代碼在%IN dplyr的過濾器中使用%時沒有給出想要的輸出。我沒有隨機使用%in,然後詢問爲什麼它隨後會出現這種情況。我再次意識到百分比中的百分比。請看看我的問題,而不是隻看到標題。

編輯2:根據建議,我正在更改我的標題,以表明我的問題與具有類似標題的現有問題不同。

+4

' 「服務」,在DF%$ y'%只是給你一個值,TRUE;。沒有任何關於這個表達式使它遍歷行,它只是說「是矢量'y'中的值''service''?」。 – Marius

+0

也許編輯標題。正如我們所知道的那樣,問題在過濾器參數中是不正確的順序,這與建議的副本是不同的問題。 – neilfws

+0

@neilfws感謝您的建議。我正在嘗試。 – addicted

回答

4

基本上,您的%in%是錯誤的方法。但使用%in%沒有多少意義,除非你有一個以上的值的字符向量。

df %>% 
    filter(y %in% "service") 
    # %in% c("service", "...", "...") would be more usual 
+0

謝謝你。我覺得混合起來很愚蠢。最初只會有一個值,但我想創建一個向量變量,所以我可以這樣做:(y%in%char_vector) – addicted