如何在R语言中按指定顺序基于已有向量创建新向量?
R语言向量按成对顺序生成新向量的解决方法
你需要将原向量的每个元素与对应的元素.1成对排列,而非先全部原元素再全部后缀元素,以下几种方法可以实现需求:
方法1:使用Map生成配对后展开
vec <- c("x", "y", "z") new_vec <- unlist(Map(c, vec, paste0(vec, ".1"))) new_vec
执行结果:
[1] "x" "x.1" "y" "y.1" "z" "z.1"
方法2:构造矩阵转置后转为向量
vec <- c("x", "y", "z") new_vec <- as.vector(t(matrix(c(vec, paste0(vec, ".1")), nrow = 2))) new_vec
该方法通过将原向量和后缀向量按行组成矩阵,转置后再转为向量,实现成对排列。
方法3:通过索引重新排序合并后的向量
如果已经合并了原向量和后缀向量,可以通过索引重新调整顺序:
vec <- c("x", "y", "z") combined <- c(vec, paste0(vec, ".1")) new_vec <- combined[rep(1:length(vec), each = 2) + c(0, length(vec))] new_vec
这里利用rep生成重复的原元素索引,加上原向量长度来定位对应的后缀元素,从而实现成对排列。
内容的提问来源于stack exchange,提问作者Buckaroo Banzai
相关产品推荐
相关产品推荐

