将两个相同大小的数据框依次合并为一列

Fle*_*ers 5 r dataframe cbind

我有两个大小相同的数据集 [132,450000]。一个具有值,另一个具有对应于这些值的 p 值。现在我想合并这两个数据集,以便我有 1 个大数据框 [264,450000],其中包含带有值的列,后跟带有相应 p 值的列。行名完全相同,列名类似于:df1 中的 sample1 和 df2 中的 sample1_pval

例如我有两个像这样的数据框

> df1
    x y
cg1 1 a
cg2 2 b
cg3 3 c
cg4 4 d
cg5 5 e

> df2
     x_pval y_pval 
cg1   6      f
cg2   7      g
cg3   8      h
cg4   9      i
cg5  10      j
Run Code Online (Sandbox Code Playgroud)

我想用这个顺序合并它们:df1 的第一列,然后是 df2 的第一列,然后是 df1 的第二列,然后是 df2 的第二列等等......

那么它看起来像这样:

> df
           x       x_pval    y        y_pval
cg1        1        6        a        f
cg2        2        7        b        g
cg3        3        8        c        h
cg4        4        9        d        i
cg5        5       10        e        j
Run Code Online (Sandbox Code Playgroud)

我想保留列名,但我可以稍后添加行名,因为它们在两个数据框中都是相同的。由于我正在处理一个大型数据集,因此我不想输入所有列并使用“cbind”。而且我找不到一次从每个数据集中处理一列的“合并”代码......

是否有一个公式或包可以做到这一点?

谁能帮帮我?

akr*_*run 5

另一种选择是连接两个数据集的列序列,order然后cbind

cbind(df1, df2)[order(c(seq_along(df1), seq_along(df2)))]
#    x x_pval y y_pval
#cg1 1      6 a      f
#cg2 2      7 b      g
#cg3 3      8 c      h
#cg4 4      9 d      i
#cg5 5     10 e      j
Run Code Online (Sandbox Code Playgroud)