如何在R语言seq函数的from参数中使用多值生成数值向量?
解决方法
你可以用以下几种更优雅的方式实现需求:
方法一:利用模运算筛选(Base R,最简洁)
直接筛选1到50中,除以7余数为1、2、3的数,再排序:
sort(Filter(\(x) x %% 7 %in% 1:3, 1:50))
方法二:简化的向量化生成
先计算所有可能的序列基准值,再结合起始点生成结果,最后筛选并排序:
base_seq <- 0:floor((50 - 1)/7) * 7 vals <- rep(1:3, each = length(base_seq)) + base_seq sort(vals[vals <= 50])
方法三:简化Base R迭代写法
用do.call替代unlist(sapply(...)),代码更紧凑:
sort(do.call(c, lapply(1:3, seq, to = 50, by = 7)))
以上方法运行后都会生成你需要的结果:
[1] 1 2 3 8 9 10 15 16 17 22 23 24 29 30 31 36 37 38 43 44 45 50
内容的提问来源于stack exchange,提问作者benson23
相关产品推荐
相关产品推荐

