2016-03-07 75 views
0

奇怪的問題,但如何過濾,以便返回一個數據框的所有行?例如,假設您有以下數據框:如何篩選R中的'任何值'?

Pts <- floor(runif(20, 0, 4)) 
Name <- c(rep("Adam",5), rep("Ben",5), rep("Charlie",5), rep("Daisy",5)) 

df <- data.frame(Pts, Name) 

,說你想建立一個預定的過濾器這個數據幀,例如:

Ptsfilter <- c("2", "1") 

,你會再通過數據幀運行,讓您的新過濾數據幀

dffil <- df[df$Pts %in% Ptsfilter, ] 

然而有時,你不希望在所有要過濾的數據幀,並在自動化和減少工作量的利益,你不希望不得不返回並刪除/註釋此過濾器的每個實例。您只需要調整Ptsfilter值,以便在該行代碼運行時不會從數據框中濾除行。

我已經嘗試/猜測的東西,如:

Ptsfilter <- c("") 
Ptsfilter <- c(" ") 
Ptsfilter <- c() 

無濟於事。

有沒有我可以輸入的值爲Ptsfilter能達到這個目標?

+2

我想你想用'%in%'代替'=='。你的意思是:如果(任何(df $ Pts%in%Ptsfilter))df' – akrun

+0

'Ptsfilter < - unique(df $ Pts)'? – scoa

+0

是@akrun我的錯誤 –

回答

0

您可能需要定義一個函數來爲您執行此操作。

filterDF = function(df,filter){ 
    if(length(filter)>0){ 
     return(df[df$Pts %in% filter, ]) 
    } 
    else{ 
     return(df) 
    } 
    } 
+0

我想這可能是要走的路,謝謝。我會回報。 –