Заменить значения в матрице в R подмножестве из векторов - PullRequest
0 голосов
/ 16 мая 2019

Я хочу заменить значения в матрице на основе индексов матрицы, хранящихся в двух векторах (один для x, другой для y). Я сделал это некоторое время назад, но забыл синтаксис для поднабора на основе векторов.

Допустим, у меня есть эта матрица и эти 2 массива:

m <- matrix(0,10,10)
x <- c(1,3,5)
y <- c(2,4,6)

И мне нужно заменить m [1,2], m [3,4], m [5,6] другим значением, какой будет синтаксис в этом случае? Я пробовал m [x, y], но не работает.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Я вспомнил, как это было, для подмножества матрицы из векторов синтаксис:

m[cbind(x,y)]
1 голос
/ 16 мая 2019

Без поддержки разреженной матрицы: если мы включим z <- c(4.5,5.6,6.7) для значений, то

for(i in 1:length(z)) m[x[i],y[i]] <- z[i]

Если вы хотите применить решение, это все, о чем я мог подумать,

apply(data.frame(x=x,y=y,z=z),1,function(row) .GlobalEnv$m[row[1],row[2]] <- row[3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...