Рассчитайте евклидово расстояние из 3 точек

У меня есть data.frame (Centroid), который содержит точки в виртуальном трехмерном пространстве (столбцы = AV, V и A), каждый из которых представляет символ (столбец = символ). Каждая строка содержит разные символы.

AV<-c(37.9,10.87,40.05)
V<-c(1.07,1.14,1.9)
A<-c(0.04,-1.23,-1.1)
Character<-c("a","A","b")

centroid = data.frame(AV,V,A,Character)
centroid
     AV    V     A Character
1 37.90 1.07  0.04         a
2 10.87 1.14 -1.23         A
3 40.05 1.90 -1.10         b

Я хочу знать сходство / несходство между каждым персонажем. Например, «а» соответствует 37,9, 1,07 и 0,04, а «А» соответствует 10,87, 1,14, -1,23. Я хочу знать расстояние между этими персонажами / 3 балла.

Я считаю, что могу рассчитать это, используя евклидово расстояние между каждым символом, но я не уверен, какой код запускать.

Я пытался использовать

dist(as.matrix(Centroids))   

Но были неудачными, так как это просто дает большой отпечаток в консоли. Будем очень благодарны любой помощи.


person user2716568    schedule 03.09.2014    source источник
comment
Вам нужно начать с изучения того, как создавать векторы и матрицы, и изучения различных типов данных в R. Существует структура данных, называемая data.frame, но не dataframe. Если вам нужен вектор чисел, используйте что-нибудь вроде c(37.9,10.87,40.05); "37.9,10.87,40.05" - это символьный вектор длины один. Эти небольшие детали синтаксиса имеют большое значение.   -  person Richie Cotton    schedule 03.09.2014
comment
@RichieCotton Спасибо, я отредактирую свой вопрос, чтобы лучше отразить структуру моего data.frame. Я новый пользователь R и SO, извиняюсь за плохую структуру моего вопроса.   -  person user2716568    schedule 03.09.2014


Ответы (1)


Следующее может быть полезным:

AV<-c(37.9,10.87,40.05)
V<-c(1.07,1.14,1.9)
A<-c(0.04,-1.23,-1.1)
centroid = data.frame(A,V,AV)
centroid
      A    V    AV
1  0.04 1.07 37.90
2 -1.23 1.14 10.87
3 -1.10 1.90 40.05

mm = as.matrix(centroid)
mm
         A    V    AV
[1,]  0.04 1.07 37.90
[2,] -1.23 1.14 10.87
[3,] -1.10 1.90 40.05

dist(mm)
          1         2
2 27.059909          
3  2.571186 29.190185

as.dist(mm)
       A     V
V  -1.23      
AV -1.10  1.90

Непонятно, что вы подразумеваете под «Символом‹ -c (a, A, b) »

person rnso    schedule 03.09.2014
comment
Спасибо за ваш ответ. Столбец «Символ» содержит символы верхнего и нижнего регистра, которые соответствуют набору из 3 точек в каждой строке. Например, а равно 37,9, 1,07 и 0,04. Я хочу знать разницу между каждым персонажем. Я поясню это в своем первоначальном вопросе. - person user2716568; 03.09.2014
comment
Попробуйте создать centroid как centroid = data.frame(AV,V,A,row.names = Character) (или, возможно, centroid <- cbind(AV,V,A); rownames(centroid) <- Character). - person Richie Cotton; 07.09.2014
comment
@RichieCotton Спасибо за вашу помощь, все сработало отлично. - person user2716568; 19.09.2014