【发布时间】:2016-11-16 00:17:06
【问题描述】:
我有一个数据框nearest_neighbour,它列出了一个点的最近邻居。所以对于点 1,第一个最近的邻居是点 2,第二个最近的邻居是点 3,以此类推。
循环并检查 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 语句。
【问题讨论】:
标签: r