Преобразование вектора в большую матрицу со сложными правилами заполнения в R - PullRequest
0 голосов
/ 11 октября 2018

У меня есть вектор Z длины K Y с размерами N x S из вектора Z.

У меня есть другой вектор n.positive длины S. n.positive[s] говорит мне, сколько значений в Z нужно вставить в строку s матрицы Y (остальные записи равны нулю).Следовательно, sum(n.positive) равно K.

Я хотел бы сделать это в R.

Например,

y <- matrix(rep(0, N*S), nrow=S)
n.pos <- rbinom(S, N, theta)
Z <- rnorm(sum(n.pos))

1 Ответ

0 голосов
/ 11 октября 2018
row.idx <- unlist(lapply(1:length(n.pos), function(x) rep(x, n.pos[x])))
col.idx <- unlist(lapply(n.pos, function(x) seq_len(x)))
y[row.idx + nrow(y) * (col.idx - 1)] <- Z
...