我的问题有点类似https://stackoverflow.com/questions/3695677/how-to-find-common-elements-from-multiple-vectors的问题。假设我有3个向量长度都相同的:R:如何在多个向量中找到具有相同索引的共同元素
v1 <- c(1, 99, 10, 11, 23)
v2 <- c(1, 99, 10, 23, 11)
v3 <- c(2, 4, 10, 13, 23)
比较V1和V2:
可以很容易地看到,v1
和v2
具有相同的元素,这将通过Reduce(intersect, list(v1, v2))
返回。但是,我只想要重叠仅在向量中的顺序相同时才返回。因此,我只希望看到1 99 10
,因为它们都分别作为索引1,2,3排序。
比较v1和v3: 这里应该返回10 23
。
比较v2和v3: 只应返回10
。 为了处理两两比较,我想我会使用嵌套循环:
v_all = list(v1, v2, v3)
length_v = length(v_all) - 1
for(i in 1:length_v){
v_ind = 1:length(v_all)
v_2 = v_ind[-which(v_all == i)]
for(j in v_2){
#code for finding overlap
}
}
你可以用'重叠<找到两个向量的重叠 - 函数(X,Y) {x [x == y]}' – Henry
'length_v'在你的例子中似乎是14。这是故意的吗? – Henry
@亨利谢谢你指出。我将'v_all'改成了一个列表。所以'length_v'应该是2,这是我想要的。 – Adrian