Как указано @markus, вы можете использовать для этого аргумент prob
.Вот еще одна идея
v <- sample(c(sample(1:2, 90, replace = TRUE), sample(3:5, 10, replace = TRUE)))
Сначала сгенерируйте 90% (то есть здесь 90 элементов), состоящий из 1,2
и оставшиеся 10% (то есть 10) отдельно, а затем перемешайте результат.
И, очевидно,
length(which(v %in% 1:2)) / length(v)
# [1] 0.9
Редактировать
Здесь более общий случай
# size of final vector
n <- 100
# percentages
p1 <- 0.935
p2 <- 1 - p1
# calculate number of elements (using round)
n1 <- round(p1*n)
n2 <- n - n1
# get final vector
v <- sample(c(sample(1:2, n1, replace = TRUE), sample(3:5, n2, replace = TRUE)))
# Note:
length(which(v %in% 1:2)) / length(v)
# [1] 0.94
Обратите внимание, что у вас может быть точный процентнапример, установив n <- 100*10
.