将方形矩阵内的所有组合传输到data.frame列

时间:2014-11-25 02:21:35

标签: r matrix

对于那些熟悉线性代数并且之前在R中完成矩阵运算的人来说,这个问题将非常简单。

我有一个包含国家文化特征的矩阵。

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")))

基于此矩阵,我想计算以下文化距离指数:

<img src="http://latex.codecogs.com/gif.latex?CDj=\sum_{i=1}^{9}\frac{(I_i_j-I_i_u)^2/Vi}{9}" title="CDj=\sum_{i=1}^{9}\frac{(I_i_j-I_i_u)^2/Vi}{9}" />

其中Iij是第i个文化实践维度和第j个国家的索引,Iiu是第i个国家的第i个文化实践维度的索引,Vt是i的索引的方差。 - 文化实践维度,CDju是第j个国家与第u个国家的文化距离。

此计算的结果应为平方矩阵,其行和列维度与国家/地区的数量相同。

一旦计算了方阵,我想在两个数据帧列中复制矩阵的所有条目。我希望结果像是

Country1      Country2    CD

Australia    Australia     0
Australia      Austria   3,2
Australia       Brazil   5,4
...             ....     ...

在尝试完成此操作时,我遇到了很多问题 - 比如,我无法获得矩阵的对角线,从而获得一个矩阵,该矩阵在对角线上具有值,并且在对角线外为零。如果有人能提出解决方案,我会很高兴。

非常感谢您的帮助! 的Riccardo

0 个答案:

没有答案