我正在尝试制作一个程序,根据阈值确定某个数字是否在群集中。我需要它经过这个循环足够的时间来检查所有数字并退出时只剩下不在阈值中的数字。我一直在使用布尔值来确定这一点。然而,似乎只要它是假的,while循环就会停止。
这是while循环:
while(allInCluster){
centroid <- mean(cluster)
distance <- max(data)
data <- c(newData)
newData <- c()
smallest <- data[1]
allInCluster2 <- FALSE
for(i in 2:length(data)){
if((abs(centroid - data[i]) > distance) & (abs(centroid - data[i]) <= centroidThreshold)){
print("smallest")
print(smallest)
newData <- c(newData, smallest)
smallest <- data[i]
print("smallest changed")
print(smallest)
allInCluster2 <- TRUE
}else{
newData <- c(newData, data[i])
allInCluster2 <- FALSE
}
}
if(allInCluster2 == FALSE){
allInCluster <- FALSE
}
cluster <- c(cluster, smallest)
print("centroid")
print(centroid)
print("cluster")
print(cluster)
print("The other numbers")
print(newData)
}
以下是我一直在使用的示例数据集:
data <- c(103,103,103,104,102, 102,102, 102,105,103, 110, 111)
将阈值设置为5.
这是它输出的内容:
[1] "cluster"
[1] 102 102 102 102
[1] "The other data"
[1] 103 103 103 104 105 103 110 111
[1] "centroid"
[1] 102
[1] "cluster"
[1] 102 102 102 102 103
[1] "The other numbers"
[1] 103 103 104 105 103 110 111
>