我有一个数据集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
Run Code Online (Sandbox Code Playgroud)
现在我想拉出那些在U1.S中被归类为S的U1行.最有效的方法是什么?
42-*_*42- 11
詹姆斯的答案具有优雅的经济性,并且肯定会在这个例子中正确运行,但如果测试的矢量有任何NA,则很容易产生不良结果.(我被困多次并感到困惑.)以下两种更安全的方法可以避免"["函数的NA包含行为:
U1[which(pred.U1.nb.c=="S"), ]
Run Code Online (Sandbox Code Playgroud)
这会将逻辑矢量(可能带有NA)转换为没有NA的数值向量.也可以使用子集:
subset(U1 ,pred.U1.nb.c=="S")
Run Code Online (Sandbox Code Playgroud)
编辑:我怀疑使用grepl也会避免NA问题.也许:
U1[grepl("^S$", pred.U1.nb.c), ]
Run Code Online (Sandbox Code Playgroud)