2016-07-09 103 views
1

我有四个元素a,b,c和d。我有一个函数计算这四个元素之间的距离并将其写入文件。该算法仅计算唯一比较(即a和b不是b和a)。以下是该文件的结构。R:如何将数据帧转换为nxn矩阵

ele1 ele2 dist 
a b 2.4 
a c 0.5 
a d 3.4 
b c 0.9 
b d 12.5 
c d 8.3 

我想写入一个nxn矩阵。我使用了下面的代码。

dataFile = read.csv("distanceMeasure.csv") 
dataToMatrix <- xtabs(dist ~ ele1 + ele2, data = dataFile) 

但是我得到的是;

b c d 
a 
b 
c 

我正在寻找的是

a b c d 
a 
b 
c 
d 

回答

1

我们可以转换为factor与指定levels从而给尽管有些水平列缺少所有组合。

Un1 <- as.character(unique(unlist(dataFile[1:2]))) 
dataFile[1:2] <- lapply(dataFile[1:2], factor, levels = Un1) 
xtabs(dist ~ ele1 + ele2, data = dataFile) 
#  ele2 
#ele1 a b c d 
# a 0.0 2.4 0.5 3.4 
# b 0.0 0.0 0.9 12.5 
# c 0.0 0.0 0.0 8.3 
# d 0.0 0.0 0.0 0.0 
+1

谢谢@akrun – SriniShine