我想创建一个函数,其中两个数据帧的合并成对出现(即df1列1紧挨着df2列1,然后df1列2紧挨着df2列2(等))。下面是一个脚本,用于制作两个随机数据帧以实现再现性。
df1 <- data.frame(replicate(10,rnorm(20)))
df2 <- data.frame(replicate(10,rnorm(20)))
基本上,目标结果是让df1 $ X1在df2 $ X1旁边,然后df1 $ X2在df2 $ X2旁边,依此类推,存储在新数据框(例如df3)中。我知道可以在data.frame()命令中写出来但这需要太长时间。是否有实现这一目标的功能?
我知道这个问题很可能已经得到解答,但我不确定如何提出问题并因此无法找到任何方法。任何帮助将非常感激。非常感谢你!
答案 0 :(得分:1)
一种可能性是使用Map
do.call(cbind, Map(cbind, df1, df2))
或mapply
do.call(cbind, mapply(cbind, df1, df2, SIMPLIFY = F))
说明:内部cbind
从df1
和df2
成对地绑定列。外部cbind
将成对列的list
绑定到最终data.frame
。
使用一对带有固定种子的小样本data.frame
(为了重现性),这是一个例子:
set.seed(2017);
df1 <- data.frame(replicate(2, rnorm(4)))
df2 <- data.frame(replicate(2, rnorm(4)))
do.call(cbind, Map(cbind, df1, df2))
# [,1] [,2] [,3] [,4]
#[1,] 1.43420148 -0.2653360 -0.069825227 -0.7467347
#[2,] -0.07729196 1.5632226 0.451905527 0.3066498
#[3,] 0.73913723 0.3427681 -1.958366456 -1.4304858
#[4,] -1.75860473 1.5724254 -0.001524259 1.1944265