r 将两列“插入”一列(就像拉链一样)

Hug*_*ugh 3 merge r

给定长度相等的两列(可能来自数据帧)N,如何生成长度为2N的列,其中第一列的奇数条目和第二列的偶数条目?

假设我有以下数据框

df.1 <- data.frame(X = LETTERS[1:10], Y = 2*(1:10)-1, Z = 2*(1:10))
Run Code Online (Sandbox Code Playgroud)

我怎样才能生成这个数据框df.2

i <- 1
j <- 0
XX <- NA
while (i <= 10){
XX[i+j] <- LETTERS[i]
XX[i+j+1]<- LETTERS[i]
i <- i+1
j <- i-1
}

df.2 <- data.frame(X.X = XX, Y.Z = c(1:20))
Run Code Online (Sandbox Code Playgroud)

mne*_*nel 5

ggplot2有一个未导出的函数interleave可以执行此操作。

虽然未导出,但它确实有一个帮助页面 ( ?ggplot2:::interleave)

with(df.1, ggplot2:::interleave(Y,Z))
## [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)