Подобно тому, как вы создаете весь тестовый вектор за один раз (rbinom
), вы можете создать все значения обоих rnorm
векторов за один раз.Поместите все в матрицу, используйте значение тестового вектора, чтобы выбрать любой из двух столбцов значений.
set.seed(1)
n <- 8
m <- cbind(test = rbinom(n, 1, 0.5),
norm0 = rnorm(n, mean = 0, sd = 1),
norm10 = rnorm(n, mean = 10, sd = 1))
m <- cbind(m, res = m[cbind(1:nrow(m), (m[ , "test"] == 1) + 2)])
# test norm0 norm10 res
# [1,] 0 0.3295078 9.378759 0.3295078
# [2,] 0 -0.8204684 7.785300 -0.8204684
# [3,] 1 0.4874291 11.124931 11.1249309
# [4,] 1 0.7383247 9.955066 9.9550664
# [5,] 0 0.5757814 9.983810 0.5757814
# [6,] 1 -0.3053884 10.943836 10.9438362
# [7,] 1 1.5117812 10.821221 10.8212212
# [8,] 1 0.3898432 10.593901 10.5939013
# [10,] 0 1.1249309 10.619826 1.1249309