r - 交替组合两个向量

标签 r

从这篇文章,Alternate, interweave or interlace two vectors ,显示了一种交替组合两个向量的便捷方法:

x <- 1:3 ; y <- 4:6
c(rbind(x, y)) # [1] 1 4 2 5 3 6

但是这种方法只适用于两个向量长度相同的情况。现在我想找到一种通用的方法来做到这一点。

这是我的想法:
  • fun <- function(x, y, n) {...}
  • xy是两个相同类型的向量,它们的长度可以不同。
  • n表示交替间隔, .

  • 预期输出:
    x <- 1:5 ; y <- c(0, 0, 0)
    fun(x, y, n = 1) # 1 0 2 0 3 0 4 5
    fun(x, y, n = 2) # 1 2 0 3 4 0 5 0
    fun(x, y, n = 5) # 1 2 3 4 5 0 0 0
    

    感谢帮助。

    最佳答案

    第一次拆分 x成组n并将其堆叠成一个长的data.frame。同样堆栈y然后 rbind将这些数据帧放在一起,按 ind 对它们进行排序(组号)并取values柱子。

    fun <- function(x, y, n) {
      sx <- stack(split(x, c(gl(length(x), n, length(x)))))
      sy <- stack(as.list(setNames(y, seq_along(y))))
      r <- rbind(sx, sy)
      r[order(r$ind), "values"]
    }
    
    x <- 1:5 ; y <- c(0, 0, 0)
    
    fun(x, y, 1)
    ## [1] 1 0 2 0 3 0 4 5
    fun(x, y, 2)
    ## [1] 1 2 0 3 4 0 5 0
    fun(x, y, 5)
    ## [1] 1 2 3 4 5 0 0 0
    

    关于r - 交替组合两个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53802352/

    相关文章:

    r - install.packages 中的警告 : cannot open UR HTTP status was '404 Not Found'

    r - 将字符串的前两个字符移到字符串中的特定字符之后

    r - 从 bam 文件中提取读取位置

    r - ggplot2 facet_grid() 更改背景颜色

    r - 如何在 R 中生成整数和定义长度的随机向量?

    r - 如何删除多种语言的停用词?

    r - 在 R 中生成所有可能的行组合?

    r - 只显示部分图例内容

    r - 如何在 R plotly 等值线图中使用非默认色标?

    r - 在 Windows 上编写 R 包构建二进制文件