我有一个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}}。
答案 0 :(得分:0)
假设你真的希望匹配是独占的(在我看来,对于一行来说更有意义是“最佳匹配”),你可以这样做:
Reduce(`+`, lapply(ffDummy_dt, `%in%`, test_v))
#[1] 1 2 1 1 1 1 0 1 1 3