R - 从3个原始向量创建矩阵

时间:2016-07-14 04:53:12

标签: r matrix

我有3个载体如下:

A <- c("A", "B", "C", "D", "E")
B <- c("1/1/1", "1/1/1", "2/1/1", "2/1/1", "3/1/1")
C <- c(1, 1, -1, 1, -1)

我希望使用这3个向量创建如下的矩阵:

- 1/1/1 2/1/1 3/1/1
A   1    0     0
B   1    0     0
C   0    -1    0
D   0    1     0
E   0    0     -1

其中,vector AB分别是行和列,我的数据为C。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

使用?xtabs

xtabs(C ~ A+B)
#   B
#A   1/1/1 2/1/1 3/1/1
#  A     1     0     0
#  B     1     0     0
#  C     0    -1     0
#  D     0     1     0
#  E     0     0    -1

答案 1 :(得分:5)

您可以尝试:

`[<-`(array(0,c(length(unique(A)),length(unique(B))),
      list(unique(A),unique(B))),
       cbind(A,B),C)
#  1/1/1 2/1/1 3/1/1
#A     1     0     0
#B     1     0     0
#C     0    -1     0
#D     0     1     0
#E     0     0    -1

答案 2 :(得分:2)

创建acast

后,另一个选项reshape2来自data.frame
library(reshape2)
acast(data.frame(A, B, C), A~B, value.var = "C", fill =0)
#  1/1/1 2/1/1 3/1/1
#A     1     0     0
#B     1     0     0
#C     0    -1     0
#D     0     1     0
#E     0     0    -1