You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中通过编程扩展并重排数组得到交替排列的目标数组?

R实现两个等长向量交替排列的最简方法

已知两个长度相同的向量:

  • cols1 <- paste0(letters[1:3]),输出为 ["a", "b", "c"]
  • cols2 <- paste0(cols1, ".new"),输出为 ["a.new", "b.new", "c.new"]

要在不使用循环的前提下,得到交替排列的向量cols3(结果为 ["a", "a.new", "b", "b.new", "c", "c.new"]),以下是几种最简实现方式:

基础R最优方案:rbind + c()展开

将两个向量按行绑定为矩阵,再用c()直接展开矩阵(R中矩阵默认按列读取元素),这是最简洁高效的基础R方法:

cols1 <- paste0(letters[1:3])
cols2 <- paste0(cols1, ".new")
cols3 <- c(rbind(cols1, cols2))

运行结果:

[1] "a"     "a.new" "b"     "b.new" "c"     "c.new"

可选方案:索引重排(适合理解逻辑)

通过重复索引配合偏移量,重新排列两个向量的元素:

cols3 <- c(cols1, cols2)[rep(1:length(cols1), each = 2) + c(0, length(cols1))]

这种方法逻辑清晰,但代码长度比第一种方案长,日常场景更推荐第一种。

Tidyverse场景方案:purrr::flatten_chr

如果已经加载tidyverse工具包,可以用map2配对对应元素后扁平化:

library(purrr)
cols3 <- flatten_chr(map2(cols1, cols2, ~c(.x, .y)))

该方法需要依赖第三方包,适合本身就在用tidyverse的工作流。

内容的提问来源于stack exchange,提问作者IVIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:55:18