R索引矩阵,带索引向量的向量/创建索引矩阵

时间:2015-08-04 22:29:42

标签: r

我正在寻找一种更简单的方法来执行以下操作:

m <- matrix(0, nrow=3, 3) 
v <- c(1, 3, 2)

for (i in 1:nrow(m)) {
  m[[i, v[i]]] = 1
}

上面的代码创建了以下索引矩阵:

      [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    0    1
[3,]    0    1    0

肯定有更好的方法可以做到这一点吗?!

1 个答案:

答案 0 :(得分:2)

在不预先定义矩阵的情况下执行此操作的一种方法是使用outer

num.col <- 3
outer(v, seq_len(num.col), "==") * 1
#      [,1] [,2] [,3]
# [1,]    1    0    0
# [2,]    0    0    1
# [3,]    0    1    0