我有一个数据框,nearest_neighbour,它列出了一个点的最近邻居。因此,对于点1,第一个最近的邻居是点2,第二个最近的邻居是点3,依此类推。R检查数据帧的多行是否出现相同的数字
什么是最快的方式来循环这一点,并检查4点是否都共享相同的最近邻居?例如,第1点的三个最近的邻居是2,3和4点2的最近的邻居是1,3和4等
which.1 which.2 which.3
1 2 3 4
2 1 4 3
3 1 4 2
4 3 1 2
5 2 4 6
6 7 5 2
我可以用if语句很容易地做到这一点的只有两个邻国:
count <- 0
for (j in 1:length(nearest_neighbour[[1]])){
if(nearest_neighbour[[1]][nearest_neighbour[[1]][j]] == j){
count <- count + 1
}
}
然而,这个方法似乎愚蠢的超过2,因为最终有很多if语句。