我有这个示例数据
a<-c(1,5,7,8,10,15)
b<-c(2,6,7,9,10,20,31)
我需要找到重复的值(两个向量中的值)并创建包含这些数字的新向量。它看起来应该是
c<-c(7,10)
由于载体长度不同,我试图将它们放入载体列表
l<-list(a=a,b=b)
并尝试了
duplicated(l)
或
duplicated(a,b)
但它给出了无意义的输出。我正在寻找正确的解决方案,但我仍然无法找到。有什么建议吗?
答案 0 :(得分:4)
看起来像intersect()
a<-c(1,5,7,8,10,15)
b<-c(2,6,7,9,10,20,31)
c<-intersect(a,b)
c
[1] 7 10
答案 1 :(得分:3)
c(a, b)[duplicated(c(a, b))]
产生
[1] 7 10
应用于向量的 duplicated
返回相同长度的逻辑向量,对于先前已在向量中出现的每个值,TRUE
。您可以使用它来对原始矢量进行子集化。
请注意,如果您不关心单个向量中是否重复值,则应执行以下操作:
a.b <- c(unique(a), unique(b))
a.b[duplicated(a.b)]
答案 2 :(得分:2)
保持在原始问题的范围内,
您可以使用match
> b[!is.na(match(a, b))]
# [1] 7 10
或更简单地说,%in%
> b[a %in% b]
# [1] 7 10
答案 3 :(得分:0)
通过创建
等功能解决duplicated_values<-function(x){
if(x%in%b){
return(x)
}
}
values<-mclapply(c(1:length(a)),duplicated_values)