r - 计算两个向量之间相同值的数量
问题描述
a<-c(19,24,34,47,47,47)
b<-c(3,14,24,25,47,47)
我想知道有多少值a
与 中的值匹配b
,但是我遇到了问题 - 当两个向量中都存在重复的数字时。对于上面的例子,我想要的答案是3
——因为 24、47、47——在两个向量之间共享。
如果我使用相交:
intersect(a,b)
[1] 24 47
第二个匹配的 47 被忽略。
如果我使用 %in%:
length(which(a %in% b))
[1] 4
额外的 47 也被计算在内。
我意识到我可以做到:
length(which(b %in% a))
[1] 3
但是,我也可能遇到 b 中存在额外匹配值而不是 a 的情况,因此 %in% 也没有用。例如:
a<-c(19,24,34,7,47,47)
b<-c(3,14,24,47,47,47)
length(which(b %in% a))
[1] 4 (I want the answer to still be 3)
因此,对于每个测试,如果不重新排列哪个向量首先出现在 %in% 函数中 - 我无法弄清楚如何做到这一点。有人可以告诉我怎么做吗?
解决方案
怎么样:
sum(pmin(
table(a[a %in% intersect(a, b)]),
table(b[b %in% intersect(a, b)])
))
我们将table()
s 的块组成 s a
,b
它们对两者都是通用的,然后我们从这些表中取出最小的数字并将它们相加。
推荐阅读
- firebase - 测试 Firebase 中缺失的属性 -> 数据库 -> 规则
- regex - 如果列表中尚不存在,如何添加项目?
- facebook - 我可以使用 Facebook 管理员角色/帐户来测试 Facebook 应用程序是否等同于 Facebook 开发人员角色/帐户?
- dynamics-crm - Dynamics CRM:无法根据活动表单中的父 ID 填充相关子记录
- react-native - 如何修复“OnPress 不在标题内工作但独立工作”
- python - 如何评估分类器的准确性并在 GridSearchCV 中留下一个生成 roc 曲线?
- adonis.js - 如何在子域和主域的adonis.js中共享会话
- android - 使用 deeplearning4j 加载 keras 模型时出错
- java - 如何在 PHP 中创建通用 DAO 接口?
- python - Python,迭代和修改df字典中的DataFrame