给定两列(可能来自数据帧)等长 N,我如何生成长度为 2N 的列,其中包含第一列中的奇数项和第二列的偶数项?
假设我有以下数据框
df.1 <- data.frame(X = LETTERS[1:10], Y = 2*(1:10)-1, Z = 2*(1:10))
我怎样才能产生这个数据框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))
最佳答案
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
关于r "slot"两列合二为一(如 zipper ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159377/