Расчет евклидова расстояния набора данных с использованием цикла for в R - PullRequest
0 голосов
/ 01 июля 2019

У меня есть набор данных с 5 столбцами и количеством чтений.Это выглядит так:

Dataset Picture

Теперь из этого набора данных я хочу взять 12 точек за раз и рассчитать евклидово расстояние от каждого из них.12 точек в этом наборе данных для другого набора значений, уже рассчитанных и сохраненных.Делая это, я хочу видеть на основе сравнения, в какой кластер он попадает. Код, который я использую для этого, следующий:

DataNew <- read.csv("TeD.csv", header = TRUE, sep = ",")

a = 1
b = 12

DataNew$CCD <- (max(DataNew$CCD) - DataNew$CCD)/(max(DataNew$CCD) - 
min(DataNew$CCD))
DataNew$CCR <- (max(DataNew$CCR) - DataNew$CCR)/(max(DataNew$CCR) - 
min(DataNew$CCR))
DataNew$CCA <- (max(DataNew$CCA) - DataNew$CCA)/(max(DataNew$CCA) - 
min(DataNew$CCA))
DataNew$CCN <- (max(DataNew$CCN) - DataNew$CCN)/(max(DataNew$CCN) - 
min(DataNew$CCN))

write.table(DataNew, file = "DataNew.csv", sep = ",", col.names = F, append 
= T)

for (i in DataNew$Serial) {

DatNew = DataNew[a:b,4:6]

for (j in 1:12) {

     EuclDistMean1 = sqrt((DatNew$CCD[j] - CentMean[1][1])^2 + ( 
     DatNew$CCR[j] - CentMean[1][2])^2 + (DatNew$CCA[j] - CentMean[1][3])^3)

     write.table(EuclDistMean1, file = "Euclidian Distance 1.csv", sep = 
     ",", col.names = F, append = T)

     EuclDistMean2 = sqrt((DatNew$CCD[j] - CentMean[2][1])^2 + 
     (DatNew$CCR[j] - CentMean[2][2])^2 + (DatNew$CCA[j] - CentMean[2] 
     [3])^3)

     write.table(CentEntropy, file = "Euclidian Distance 2.csv", sep = ",", 
     col.names = F, append = T)

    }

    if(EuclDistMean1 < EuclDistMean2)
    {
        print("Cluster 1")
    }

   else if(EuclDistMean2 < EuclDistMean1)
   {
        print("Cluster 2")
   }

  a = a + 12
  b = b + 13
}

Однако, когда я выполняю этот код, я получаю N /А значения и программа ломаются после итерации в течение первых 12 раз.Если кто-то может предложить какое-либо обновление или исправление в коде, то я буду очень признателен.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...