2013-02-07 265 views
-1

我想将矢量转换为转换矩阵。 我有一个向量t和由它的最大值来获得0和1之间的值除以这个然后我在此为一个矩阵R转换矩阵

t <- c(22, 65, 37, 84, 36, 14, 9, 19, 5, 49) 
x <- t/max(t) 
y <- x%*%t(x) 

我的问题是我想要的矩阵(Y)到的列加起来就是1,即将它变成一个转换矩阵,但我不知道该怎么做。任何建议感激!

回答

2

sweep()是一个多功能的小功能,你可以在这里使用其自己的总和除以每列:

yy <- sweep(y, MARGIN = 2, STATS = colSums(y), FUN = "/") 

## Confirm that the columns of yy all sum to 1 
colSums(yy) 
## [1] 1 1 1 1 1 1 1 1 1 1 
+0

@这确实让列加起来之一,但它也导致行的每个元素具有相同的值,即 '[1] [2] [3] [4] [5] [1,] 0.06470588 0.06470588 0.06470588 0.06470588 0.06470588 [2,1] 0.19117647 0.19117647 0.19117647 0.19117647 0.19117647' 有没有办法为这些元素获取不同的值? – soshea