在R语言中如何从数字序列中抽样并跳过指定数值
R中使用sample()抽样时跳过指定数值的实现方法
你要实现跳过数值3从1~10中抽样的需求,只需要先构造剔除了3的候选抽样序列,再传入sample()函数即可,具体实现方式如下:
直接实现代码
对应你给出的需求示例,直接写法为:
sample(x = (1:10)[1:10 != 3], size = 5, replace = TRUE)
代码说明
(1:10)[1:10 != 3]:从1~10的整数序列中筛选所有不等于3的元素,得到的候选集为c(1,2,4,5,6,7,8,9,10)- 后续的
size、replace参数和原生sample()的用法完全一致,不需要调整
通用扩展写法
如果你后续需要跳过多个数值,或者需要频繁调整跳过的数值,可以用更灵活的写法:
# 定义要跳过的数值,可自行修改 skip_values <- c(3) # 定义原始抽样范围 candidate_range <- 1:10 # 抽样 sample(x = candidate_range[!candidate_range %in% skip_values], size = 5, replace = TRUE)
示例运行结果
某次运行的输出如下,不会出现3:[1] 2 7 10 4 1
内容的提问来源于stack exchange,提问作者Jason Chia Kim Leng
相关产品推荐
相关产品推荐

