Случайный выбор значений из существующей матрицы после добавления вектора (в R)

Большое спасибо за вашу помощь!

Я пытаюсь изменить существующую матрицу таким образом, чтобы при добавлении новой строки в матрицу она удаляла значения из ранее существовавших матрица.

Например, у меня есть матрица:

[,1] [,2] [,3] [,4]
 1     1    0    0
 0     1    0    0
 1     0    1    0
 0     0    1    1

Я хочу добавить еще один вектор, I.vec, который имеет два значения ( I.vec = c (0,1,1,0) ). Сделать это достаточно просто. Просто привязываю к матрице. Теперь для каждого столбца, в котором I.vec равно 1, я хочу случайным образом выбрать значение из других строк и сделать его нулевым. В идеале в итоге получилась бы такая матрица:

[,1] [,2] [,3] [,4]
 1     0    0    0
 0     1    0    0
 1     0    0    0
 0     0    1    1
 0     1    1    0

Но каждый раз, когда я запускаю итерацию, я хочу, чтобы она снова произвела выборку.

Вот что я пробовал:

mat1<-matrix(c(1,1,0,0,0,1,0,0,1,0,1,0,0,0,1,1),byrow=T, nrow=4)
I.vec<-c(0,1,1,0)
mat.I<-rbind(mat1,I.vec)
mat.I.r<-mat.I
d1<-mat.I[,which(mat.I[5,]==1)]
mat.I.r[sample(which(d1[1:4]==1),1),which(mat.I[5,]==1)]<-0

Но это удаляет только одну из два значения, которые я хотел бы удалить. Я также пробовал различные варианты разделения матрицы, но мне это не удалось.

Еще раз спасибо!

5
задан Andrie 28 July 2011 в 07:06
поделиться