谁能告诉我如何从多个向量中找到共同元素?
a <- c(1,3,5,7,9)
b <- c(3,6,8,9,10)
c <- c(2,3,4,5,7,9)
Run Code Online (Sandbox Code Playgroud)
我想从上面的向量中得到共同的元素(例如:3和9)
bna*_*aul 301
可能有一种更聪明的方法可以解决这个问题,但是
intersect(intersect(a,b),c)
Run Code Online (Sandbox Code Playgroud)
会做的.
编辑:更聪明,更方便,如果你有很多论点:
Reduce(intersect, list(a,b,c))
Run Code Online (Sandbox Code Playgroud)
Jam*_*mes 19
一个很好的答案,但还有其他几种方法可以做到这一点:
unique(c[c%in%a[a%in%b]])
Run Code Online (Sandbox Code Playgroud)
要么,
tst <- c(unique(a),unique(b),unique(c))
tst <- tst[duplicated(tst)]
tst[duplicated(tst)]
Run Code Online (Sandbox Code Playgroud)
unique
如果你知道其中没有重复的值a
,你可以显然省略这些调用,b
或者c
.
intersect_all <- function(a,b,...){
all_data <- c(a,b,...)
require(plyr)
count_data<- length(list(a,b,...))
freq_dist <- count(all_data)
intersect_data <- freq_dist[which(freq_dist$freq==count_data),"x"]
intersect_data
}
intersect_all(a,b,c)
Run Code Online (Sandbox Code Playgroud)
更新编辑更简单的代码
intersect_all <- function(a,b,...){
Reduce(intersect, list(a,b,...))
}
intersect_all(a,b,c)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
169166 次 |
最近记录: |