如何查找包含查询向量最匹配的data.table行

时间:2016-10-04 19:44:16

标签: r data.table bioinformatics

我有一个data.table,如

test_v = c(0,0,0.86)

我想传递一个查询(可以是vector,甚至是data.table,如果需要的话),如:

which.max(apply(as.matrix(ffDummy_dt[,2:ncol(ffDummy_dt),with=F]), 1, 
  function(k) sum(test_v%in%k)))

我想知道哪一行是最佳匹配。

在我的实际用例中,test_v类似于20个元素,而nrow(Dummy_dt)是>> 20(但每个20元素向量可能只有一个完美匹配)。

目前,

%in% k

似乎有效(在这种情况下给出正确的输出,即10),但这不是data.table解决方案。

我看过here,但无法弄清楚如何在data.table上使用{{1}}。

1 个答案:

答案 0 :(得分:0)

假设你真的希望匹配是独占的(在我看来,对于一行来说更有意义是“最佳匹配”),你可以这样做:

Reduce(`+`, lapply(ffDummy_dt, `%in%`, test_v))
#[1] 1 2 1 1 1 1 0 1 1 3
相关问题