如何有效地将矢量转换为矩阵,以便矢量的值确定列,元素排序确定行,然后确定在这些索引处分配的值。
Frac
我正在寻找比我的for循环更好的单行
Add
答案 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