我有一个数据集 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 行。执行此操作的最有效方法是什么?
最佳答案
James 的答案具有优雅的经济性,并且肯定会在此示例中正常工作,但是如果测试向量具有任何 NA,则很容易出现不良结果。 (我被咬了很多次,很困惑。)这里有两种更安全的方法可以避免 "["函数的包含 NA 的行为:
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), ]
关于r - 通过基于 R 中向量的值选择行的新子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269944/