2014-01-30 268 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