首页 > 解决方案 > 用 r 创建一个伪随机列表

问题描述

鉴于我有 4 个不同的值

intensities <- c(0.1,-0.1,0.05,-0.05)

我的目标是对每个值随机采样 5 次,但正值和负值应该交替,例如

结果列表 = (0.1, -0.05, 0.05, -0.05, 0.1, -0.1, ...)

有人知道在 R 中执行此操作的优雅方法吗?

标签: r

解决方案


也许是这样的

# seed
set.seed(123)

plus <- rep(intensities[intensities >= 0], each = 5)
minus <- rep(intensities[intensities < 0], each = 5)
out <- numeric(length(plus) + length(minus))
out[seq(1, length(out), 2)] <- sample(plus)
out[seq(2, length(out), 2)] <- sample(minus)
out
# [1]  0.10 -0.05  0.05 -0.10  0.10 -0.05  0.05 -0.05  0.05 -0.10  0.10 -0.05  0.05 -0.05  0.05 -0.10
# [17]  0.10 -0.10  0.10 -0.10

推荐阅读