如何将向量转换为R中的矩阵索引

时间:2018-03-05 20:59:32

标签: r

如何有效地将矢量转换为矩阵,以便矢量的值确定列,元素排序确定行,然后确定在这些索引处分配的值。

Frac

我正在寻找比我的for循环更好的单行

Add

2 个答案:

答案 0 :(得分:6)

参见示例:

X <- c(1,2,3,1,1,3)
Y <- 1:6

myfun <- function(X, Y) {
  Z <- matrix(NA, length(X), max(X))
  Z[cbind(seq_along(X), X)] <- Y
  Z
}

Z <- myfun(X, Y)
Z

答案 1 :(得分:3)

如果你坚持单行,那么@ djhurio的答案可以转换为

replace(matrix(NA, length(X), max(X)), cbind(1:length(X), X), Y)
#      [,1] [,2] [,3]
# [1,]    1   NA   NA
# [2,]   NA    2   NA
# [3,]   NA   NA    3
# [4,]    4   NA   NA
# [5,]    5   NA   NA
# [6,]   NA   NA    6