如何将长向量按指定间隔拆分为无重复值的等长子向量?
解决向量拆分问题:按旋转线分组提取无重复子向量
首先明确你的向量结构:总长度261×1000=261000,其中前1000个元素是第1条原始飞行线的1000条旋转线数据,接下来1000个是第2条原始线的旋转数据,以此类推,直到第261条原始线。你的需求是生成1000个子向量,每个子向量对应一条旋转线,包含该旋转线在所有261条原始线上的测量值,且所有子向量无重复元素。
原代码的问题
你之前用步长261采样的逻辑错误,因为向量是按原始线分组(每组1000个元素),而非按旋转线分组。原代码中seq(i, length.out = 261, by = 261)会跨旋转线重复选取元素(比如第262个子向量的262、523等元素,已经出现在第1个子向量中)。
正确实现代码
正确的采样逻辑应该是:对于第k条旋转线(k从1到1000),需要提取每个原始线组中的第k个元素,也就是起始位置为k,步长为1000(每个原始线组的长度),共取261个元素:
vec <- 1:261000 subvector_list <- lapply(1:1000, function(k) vec[seq(k, length.out = 261, by = 1000)])
验证示例
用小尺寸数据验证逻辑:假设2条原始线,每条3条旋转线,向量为1:6。按上述代码生成的子向量为:
subvector_list[[1]] = c(1,4)(第1条旋转线在2条原始线上的值)subvector_list[[2]] = c(2,5)(第2条旋转线在2条原始线上的值)subvector_list[[3]] = c(3,6)(第3条旋转线在2条原始线上的值)
所有子向量无重复元素,完全符合需求。
内容的提问来源于stack exchange,提问作者Nicola
相关产品推荐
相关产品推荐

