看板 R_Language 關於我們 聯絡資訊
舉例來說 x=c(123,456,897,243,651,852,964,357,555) y=c(651,852,111) 我想要從 x 中 篩選出 y 中有的變數 651 852 111 111沒有出現在 x 中 所以不用顯示出來 基本上我想要的就是位置 5,6 ( 651=x[5] 852=x[6] ) 目前我的想法是 #先用布林值去判斷哪個為true #再去找位置 bo = as.integer( x == y[1] ) bo_matr = matrix(bo) map = which(apply(bo_matr, 1L,function(row) all(row == 1))) 這樣就很清楚知道是 x 中的 5,6 是我要的 (因為 true=1 ) 但是這樣很花時間 因為我 x y 各有上百萬筆row 每次都百萬筆去做布林比對 非常沒效率 所以想問問看有沒有類似函數可以幫我做篩選 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.53.171 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1471345900.A.1A8.html
andrew43: x %in% y 如何? 08/16 19:27
andrew43: 但這不能告訴你誰是誰… 08/16 19:28
感謝版主T.T 成功了 看起來是一次比對全部 執行速度也很快 另外類似這種 %in% 的用法 有文章介紹嗎? http://chingchuan-chen.github.io/r/2015/07/01/magrittr 我有看過這篇 裡面有講一些 a_list %>% unlist %>% unique %>% sort 這些寫得蠻詳細的 正在學習中 這種方法對我來說 算是比較高階的語法了 目前我資料整理 都還是用矩陣的方式 篩選 合併 cbind 這類的code 謝謝
celestialgod: library(pipeR); match(y,x) %>>% `[`(!is.na(.)) 08/16 19:40
※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:47:32
celestialgod: 第一次看到自己部落格在別人文章中有點害羞>///< 08/16 19:48
>///< 話說R版的版主都好熱心 回應速度都超快 學到了很多 感謝>< ※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:52:22 ※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:53:24