2010-11-24 45 views
4

選擇基於矢量的值的行新子集我有過,我運行一個分類,並獲得標籤的載體由R中

pred.U1.nb.c <- predict(NB.C, U1[,2:6]) 
table(pred.U1.nb.c) 
pred.U1.nb.c 
    S unlabeled 
    148  5852 
> head(pred.U1.nb.c) 
    [1] S S S S S S 
    Levels: S unlabeled 

現在我想拉出來的那些行的數據集U1在U1.S.中被分類爲S的U1。什麼是最有效的方法來做到這一點?

回答

11

詹姆斯的回答優雅經濟去爲它並肯定會與這個例子中正常工作,但很容易出現不良的結果,如果測試向量有任何NA的。 (我一直咬了很多次,一直弄不明白。)下面是避免「[」功能的NA -inclusive行爲的兩個更安全的方式:

U1[which(pred.U1.nb.c=="S"), ] 

這將邏輯矢量(可能與NA的)成沒有NA的數值向量。也可以使用子集:

subset(U1 ,pred.U1.nb.c=="S") 

編輯:我懷疑使用grepl也會避免NA關心。也許:

U1[grepl("^S$", pred.U1.nb.c), ] 
+1

`U1 [pred.U1.nb.c%in%「S」,]``也會工作,因爲我記得可能比`which`更快。 – Marek 2010-12-01 20:47:28

3
U1[pred.U1.nb.c=="S",]