[问题] 资料筛选相关问题 多对多

楼主: f496328mm (为什么会流泪)   2016-08-16 19:11:38
举例来说
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
每次都百万笔去做布林比对
非常没效率
所以想问问看有没有类似函数可以帮我做筛选
谢谢
作者: andrew43 (讨厌有好心推文后删文者)   2016-08-16 19:27:00
x %in% y 如何?但这不能告诉你谁是谁…
作者: celestialgod (天)   2016-08-16 19:40:00
library(pipeR); match(y,x) %>>% `[`(!is.na(.))第一次看到自己部落格在别人文章中有点害羞>///<

Links booklink

Contact Us: admin [ a t ] ucptt.com