Назначить матрицу значений на основе условия индекса - PullRequest
0 голосов
/ 01 октября 2018

Как мне присвоить значение в матрицу на основе вектора индекс условия .Рабочий пример:

# Input: 
r <- c(2, 1, 3)
m <- matrix(rep(0, 9), nrow = 3)

# Desired output
result <- matrix(c(0, 1, 0,
               1, 0, 0,
               0, 1, 0), nrow = 3)
result.

# I try with this notation but it does not work:
sapply(1:3, function(x)m[x, r[x]] <- 1)

1 Ответ

0 голосов
/ 01 октября 2018

Мы используем row/column индексирование, чтобы назначить

m[cbind(seq_len(nrow(m)), r)]  <- 1

Или используя replace

replace(m, cbind(seq_len(nrow(m)), r), 1)
...