2012-05-11 53 views
4

如何在一個向量中組合所有狀態名稱,而不是分別列出所有邏輯排除項?我在CRAN網站上找到了函數%notin%,但是R不認爲它是一個合法函數。如何使用多個排除來對數據集進行子集化?

indata <- indata[which(indata$STATE != "GU" & indata$STATE != "WY" & 
         indata$STATE != "KS" & indata$STATE != "ME" & 
         indata$STATE != "MT" & indata$STATE != "ND" &), ] 

謝謝。

回答

5
indata[!indata$STATE %in% c("GU", "WY", "KS", "ME", "MT", "ND"), ] 

編輯:@CarlWitthoft,信不信由你,其實我已經有一個私人包下了一陣

`%notin%` <- function (x, table) x[!x %in% table] 

但是,我從來沒有想用它,直到我後我已經輸入了很長的路。另外,使用它會使我的代碼更少分佈。我不知道的

operators:::`%!in%` 

這是唯一的%notin%

+0

還注意到GSEE的回答不需要'which'作爲索引使用TRUE/FALSE,而不是數字索引,它創建(輸入較少並且速度更快) –

+0

而對於作業,定義一個執行該操作的操作符%notin%:-) –

3

下半年再試試:

library(operators) 

x%!in%y 

#works fine 
相關問題