2014-11-25 5 views
-1

번으로 수행 R 행렬을 사용하여 다음 계산을 직접 수행 할 수 있다고 생각했지만 잘못되었습니다. 아래의 행렬의 확대에 기초하여, I는 다음 식행렬 연산자가있는 행렬과 행렬 사이의 가중치를 R

formula

에게 단순히 열 분산으로 나눈 행렬의 행 간의 차이를 제곱 된 결과를 계산하고 싶은 모든 결국 나누어 행렬의 nr 인 9 씩 증가합니다. 이 계산의 결과는 행렬 행 중 가중치가 적용된 행렬의 정사각형 행렬이됩니다.

structure(c(4.36, 4.44, 4.04, 4.49, 4.09, 4.46, 3.81, 4.44, 3.4, 
3.09, 3.31, 3.7, 4.28, 4.62, 4.2, 4.05, 4.28, 3.72, 3.66, 4.49, 
4.17, 4.85, 5.18, 4.26, 4.29, 4.3, 3.83, 4.38, 4.74, 4.95, 5.33, 
4.82, 4.39, 5.16, 3.6, 4.58), .Dim = c(4L, 9L), .Dimnames = list(
    c("Australia", "Austria", "Brazil", "Canada"), c("Performance.Orientation", 
    "Future.Orientation", "Gender.Egalitarianism", "Assertiveness", 
    "Humane.orientation", "in.group.collectivism", "institutional.collectivism", 
    "power.concentration.decentralization..power.distance.", 
    "uncertainty.avoidance"))) 

이 문제를 해결할 방법을 모르므로 얻을 수있는 도움이 정말 감사 하네.

미리 감사드립니다.

+0

@DavidArenburg을 제안 주셔서 감사합니다. 불행히도, 둘 다 작동하지 않는 것 같습니다. 첫 번째 줄은 한 줄짜리 솔루션을 제공하고 두 번째 줄은 어떤 이유로 35x9 데이터 표를 다시 제공합니다. 이 함수의 이상적인 결과는 두 차원의 국가 이름이있는 4x4 정사각형 행렬입니다. – Riccardo

+0

나는 당신에게 그것을 어기는 방법을 모르지만, 당신의 공식은 각'j' 값에 대한 스칼라 값을 반환합니다. 출력을 해킹하지 않으면 정사각형 매트릭스를 얻을 수 없습니다. –

+0

@CarlWitthoft 정확 하 게. 줄 j와 다른 줄 사이의 거리는 스칼라입니다. 따라서 j와 모든 행렬 사이의 거리 (j 자체 포함)는 행 수와 동일한 벡터입니다. 그러나 어떤 행과 다른 행 사이의 거리는 행렬입니다. 그렇지 않니? 이 문제에 대한 설명은 제가 줄 수있는 최선이었습니다. 좀 더 정확한 것을 제안 할 수 있다면 공유 할 수 있다면 매우 행복 할 것입니다. 많은 감사합니다. – Riccardo

답변

2

여기에서 dist 기능을 사용할 수 있습니다. 먼저 각 열을 표준 편차로 나눠서 원하는 크기 조정을하십시오.

mat2<-apply(mat,2,function(x)x/sd(x)) 
x<-dist(mat2)^2/9 
x 
#   Australia  Austria  Brazil 
# Austria 1.2201838730       
# Brazil 2.2438097238 2.6753385616    
# Canada 0.5118006068 1.9591707783 3.3896964564 

은 일반 행렬 복구하려면 :

as.matrix(x) 
#    Australia  Austria  Brazil  Canada 
# Australia 0.0000000000 1.220183873 2.243809724 0.5118006068 
# Austria 1.2201838730 0.000000000 2.675338562 1.9591707783 
# Brazil 2.2438097238 2.675338562 0.000000000 3.3896964564 
# Canada 0.5118006068 1.959170778 3.389696456 0.0000000000 
+0

고맙습니다 @mrip! 정말 아름답게 작동합니다. – Riccardo