我想根据以下条件生成100个数字的序列-
我的尝试
我尝试使用runif
创建序列。但是我不确定如何包括第二个条件。
v=c(1,2,3,4,5)
rep(sample(v),100)
第二种情况对您的帮助将不胜感激
答案 0 :(得分:1)
如@markus所示,您可以为此使用prob
参数。这是另一个想法
v <- sample(c(sample(1:2, 90, replace = TRUE), sample(3:5, 10, replace = TRUE)))
首先分别生成由1,2
组成的90%(即90个元素)和其余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
来获得确切的百分比。