2014-01-30 188 views
1

我有一個向量有兩列,一列包含數值和一列包含名稱。我是R的新手,但基本上我想要一個向量並創建一個矩陣其中矩陣內的值將加在一起。例如,在向量A的值爲1且B的值爲1的情況下,在A和BI的交點處的矩陣中,要添加的值爲2.從R中的向量創建矩陣

我試過使用一個for循環,但我有麻煩的參數放在循環中。任何幫助將不勝感激,我很樂意澄清的東西,如果沒有意義。

基本上我要的是藉此:
A 1
B 0,
C^0
d 1
並把它變成這樣:

A B C D 
A  1 1 2 
B 1  0 1 
C 1 0  1 
D 2 1 1   

謝謝!

回答

4
R > x <- c(1,0,0,1) 
R > outer(x, x, "+") 
    [,1] [,2] [,3] [,4] 
[1,] 2 1 1 2 
[2,] 1 0 0 1 
[3,] 1 0 0 1 
[4,] 2 1 1 2 

接下來就是忽略對角線。由Vincent更新:

names(x) <- c("A","B","C","D") 
+0

不錯的一個。您可以使用'diag(z)< - 0'來操縱對角線。 – Andrie

+0

感謝您的幫助!有沒有辦法讓名字保持完整,以便不用[,1] [,2] [,3] [,4]我可以有A B C和D? – user3253741

+0

姓名(x)< - c(「A」,「B」,「C」,「D」) – Vincent