簡體   English   中英

通過基於R中的向量的值選擇行來新的子集

[英]New subset by selecting rows based on values of a vector in 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行。 最有效的方法是什么?

詹姆斯的答案具有優雅的經濟性,並且肯定會在這個例子中正確運行,但如果測試的矢量有任何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), ]
U1[pred.U1.nb.c=="S",]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM