我的問題有點類似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