通过基于R中的向量的值选择行来新的子集

时间:2010-11-24 17:53:11

标签: r

我有一个数据集U1,我在其上运行分类器并获得标签矢量

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.S中被归类为S的U1行。最有效的方法是什么?

2 个答案:

答案 0 :(得分: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 :(得分:3)

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