R语言:如何按每n个元素为一组重复序列x次?
R语言向量按固定长度分组重复的实现
原始向量与需求
定义原始向量:
v <- c(1, 2, 3, 4)
需求:将向量中每n个元素组成的子序列重复x次。例如当x=2、n=2时,期望得到:
[1] 1 2 1 2 3 4 3 4
已尝试的无效方法
- 整体重复整个向量,不符合分组重复的要求:
rep(v, times=x) # 输出:[1] 1 2 3 4 1 2 3 4
- 单个元素重复,不是按组重复子序列:
rep(v, each=x) # 输出:[1] 1 1 2 2 3 3 4 4
解决方案
方法1:分组后重复再合并
先将向量分割为长度为n的分组,对每个分组重复x次后合并:
x <- 2 n <- 2 # 分割为指定长度的分组 groups <- split(v, ceiling(seq_along(v)/n)) # 对每个分组重复x次并展开 result <- unlist(lapply(groups, function(g) rep(g, times=x))) result # 输出:[1] 1 2 1 2 3 4 3 4
方法2:利用rep的times参数指定分组重复次数
直接构造对应分组的重复次数向量,传递给rep的times参数,更简洁:
x <- 2 n <- 2 # 生成每个分组的重复次数:共 length(v)/n 个分组,每个重复x次 repeat_times <- rep(x, length.out = length(v)/n) result <- rep(v, times = repeat_times) result # 输出:[1] 1 2 1 2 3 4 3 4
内容的提问来源于stack exchange,提问作者Lluís Serra Domínguez
相关产品推荐
相关产品推荐

