R语言新手求助:如何生成序列(1,2,2,3,4,4,…,50,50)
生成指定序列的R语言实现
先拆解下这个序列的规律:1到50里,所有奇数(1、3、5…49)各出现1次,所有偶数(2、4、6…50)各出现2次,最终按顺序排列成目标序列。下面给两种适合新手的实现方法:
方法一:向量操作(简洁高效)
用R的向量函数快速生成,步骤清晰:
- 先生成1到50中的奇数和偶数向量:
odds <- seq(1, 49, by = 2) # 生成1、3、5…49 evens <- seq(2, 50, by = 2) # 生成2、4、6…50 - 把每个偶数重复2次,再和奇数按顺序交错合并:
evens_repeated <- rep(evens, each = 2) # 把每个偶数复制两次 result <- c(rbind(odds, evens_repeated)) # 交错合并两个向量 - 运行后打印
result就能看到目标序列。
方法二:循环构建(更直观易懂)
如果觉得向量操作有点绕,用循环一步步添加元素,新手更容易理解逻辑:
result <- c() # 先创建空向量存结果 for (i in 1:50) { if (i %% 2 == 0) { # 如果是偶数,就往结果里加两次这个数 result <- c(result, i, i) } else { # 如果是奇数,就加一次 result <- c(result, i) } }
- 循环结束后,
result就是你要的序列。
可以用length(result)验证长度:25个奇数(各1次)+25个偶数(各2次),总长度应该是75,运行后返回75就说明生成正确。
内容的提问来源于stack exchange,提问作者Phuong Dinh
相关产品推荐
相关产品推荐

