2014-09-03 10 views
1

가상의 3D 공간 (열 = AV, V 및 A)의 포인트를 포함하는 data.frame (Centroid)이 있으며, 각각은 문자 (열 = 문자)를 나타냅니다. 각 행에는 다른 문자가 들어 있습니다.3 점의 유클리드 거리를 계산하십시오.

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 

각 문자 간의 유사/비 유사성을 알고 싶습니다. 예를 들어 "a"는 37.9, 1.07 및 0.04에 해당하고 "A"는 10.87, 1.14, -1.23에 해당합니다. 나는이 문자들/3 점 사이의 거리를 알고 싶다.

나는이 값을 각 문자 사이의 유클리드 거리를 사용하여 계산할 수 있다고 믿지만, 실행할 코드가 확실하지 않습니다.

나는

dist(as.matrix(Centroids)) 

를 사용하려고했습니다 그러나 이것은 단지 콘솔에 큰 프린트를 제공으로, 실패되었습니다. 어떤 도움이라도 대단히 감사하겠습니다.

+1

당신은 벡터를 생성하는 방법을 학습으로 시작해야 행렬 및 R에서 다른 데이터 유형에 대해 학습합니다.'data.frame'이라고하는 데이터 구조가 있지만 'dataframe'은 없습니다. 숫자의 벡터를 원한다면'c (37.9,10.87,40.05)'와 같은 것을 사용하십시오; ' "37.9,10.87,40.05"는 길이가 1 인 문자 벡터입니다. 이러한 작은 구문의 세부 사항은 중요합니다. –

+0

@RichieCotton 감사합니다. 내 data.frame의 구조를 더 잘 반영하도록 질문을 편집하겠습니다. 저는 R과 SO에 대한 새로운 사용자입니다. 제 질문의 가난한 구조에 사과드립니다. – user2716568

답변

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,을, B)"

+0

답변 해 주셔서 감사합니다. "문자"열에는 각 행의 3 점 집합에 해당하는 대소 문자가 혼합되어 있습니다. 예를 들어, a는 37.9, 1,07 및 0.04입니다. 각 문자의 차이점을 알고 싶습니다. 나는 원래의 질문에서이를 분명히 할 것이다. – user2716568

+0

'centroid = data.frame (AV, V, A, row.names = Character)'(또는 아마도'centroid <- cbind (AV, V, A); rownames (centroid) '). –

+0

@RichieCotton 완벽한 도움을 주신 귀하의 도움에 감사드립니다. – user2716568

관련 문제