我有一个数据集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行。最有效的方法是什么?
答案 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",]