R转换矩阵

时间:2013-02-07 16:37:19

标签: r

我想将矢量转换为转换矩阵。 我有一个向量t并用它的最大值除以得到0到1之间的值。然后我把它变成一个矩阵

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

我的问题是我希望矩阵(y)的列加起来为1,即使其成为转换矩阵,但我不知道该怎么做。任何建议表示赞赏!

1 个答案:

答案 0 :(得分: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