2013-02-07 366 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