Большое спасибо за вашу помощь!
Я пытаюсь изменить существующую матрицу таким образом, чтобы при добавлении новой строки в матрицу она удаляла значения из ранее существовавших матрица.
Например, у меня есть матрица:
[,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
Но это удаляет только одну из два значения, которые я хотел бы удалить. Я также пробовал различные варианты разделения матрицы, но мне это не удалось.
Еще раз спасибо!