Как я могу заполнить матрицу случайными значениями, которые должны удовлетворять условию? - PullRequest
2 голосов
/ 14 июля 2020

У меня следующий R-код:

mat <- matrix(0L,500,10)


for(i in 1:500){
  mat[i,] <- rnorm(10,0,1) 
  
}
mat <- mat[mat[,10] >=-0.5,]

dim(mat) 

Я не хочу, чтобы для моего 10-го столбца были значения ниже -0,5. Однако я все еще хочу иметь матрицу с 500 строками. Поэтому мне нужно l oop вместо моего for-l oop, пока dim (mat) [1] = 500. Как я могу это сделать? Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Вы можете инициализировать матрицу за один шаг, не используя al oop:

mat <- matrix(rnorm(500*10,0,1), 500, 10)

Затем, используя while l oop, замените значения ниже -0.5 в 10-м столбце на выборка нормального распределения, пока все они не станут больше или равны 0.5:

while (sum(mat[, 10] < -0.5)) { 
  mat[mat[, 10] < -0.5, 10] <- rnorm(sum(mat[, 10] < -0.5), 0, 1) 
}
0 голосов
/ 14 июля 2020

Используя базу r, вы можете попробовать этот подход.

Сначала создайте матрицу, используя случайные нормальные значения в 500 строках и 10 столбцах:

mat <- matrix(rnorm(500, 0, 1), nrow = 500, ncol = 10)

Затем удалите значения ниже -0,5 из 10-й столбец:

mat[which(mat[, 10] < -0.5), 10] <- NA

При необходимости замените NA другим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...