使用R for循环从数据帧创建不同的矩阵

使用R for循环从数据帧创建不同的矩阵,r,loops,for-loop,matrix,dataframe,R,Loops,For Loop,Matrix,Dataframe,我有两个数据帧(df1和df2),它们的结构如下: CHR SNP A1 A2 FAM CA1 CA2 1 rs3818361 A G 0.35 7 13 2 rs7561528 A G 0.2 4 16 2 rs6733839 T C 0.45 9 11 2 rs744373 G A 0.45 9 11 2 rs35349669 T C 0.35 7 13 ... 它们有7列和41行(不计算colnames行)。对于每个数据帧的CA1和CA2列,我必须构建2x2矩阵,如下所示: [CA1 f

我有两个数据帧(df1和df2),它们的结构如下:

CHR SNP A1 A2 FAM CA1 CA2
1 rs3818361 A G 0.35 7 13
2 rs7561528 A G 0.2 4 16
2 rs6733839 T C 0.45 9 11
2 rs744373 G A 0.45 9 11
2 rs35349669 T C 0.35 7 13
...
它们有7列和41行(不计算colnames行)。对于每个数据帧的CA1和CA2列,我必须构建2x2矩阵,如下所示:

[CA1 from df1] [CA2 from df1] #first row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #first row CA1 and CA2 from df2

[CA1 from df1] [CA2 from df1] #second row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #second row CA1 and CA2 from df2

[CA1 from df1] [CA2 from df1] #third row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #third row CA1 and CA2 from df2
counts<-cbind(df1$CA1,df1$CA2,df2$CA1,df2$CA2,df3$CA1,df3$CA2,df4$CA1,df4$CA2
,df5$CA1,df5$CA2,df6$CA1,df5$CA2,df6$CA1,df6$CA2)
我曾考虑过一个for循环(我在1:41中提到),但我很难巩固这个想法

for (i in 1:41) {
do
datai <- c(df1[i,7],df1[i,8],df2[i,7],df2[i,8])
matrixi <- matrix(datai, nrow=2, ncol=2, byrow=TRUE)
}
for(1:41中的i){
做

数据i
var我们可以使用
Map

Map(rbind, split(df1[c('CA1', 'CA2')], 1:nrow(df1)), 
                 split(df2[c('CA1', 'CA2')], 1:nrow(df2)))

尽管你的答案有效,但我也向我实验室的某个人寻求帮助,结果奏效了,还有一个选择。我给你留下答案,以防它对某人有所帮助:

首先,将我需要的所有7个dfs的所有列绑定到一个数据帧中:称为¨counts¨。在counts中,结构如下:

[CA1 from df1] [CA2 from df1] #first row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #first row CA1 and CA2 from df2

[CA1 from df1] [CA2 from df1] #second row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #second row CA1 and CA2 from df2

[CA1 from df1] [CA2 from df1] #third row CA1 and CA2 from df1
[CA1 from df2] [CA2 from df2] #third row CA1 and CA2 from df2
counts<-cbind(df1$CA1,df1$CA2,df2$CA1,df2$CA2,df3$CA1,df3$CA2,df4$CA1,df4$CA2
,df5$CA1,df5$CA2,df6$CA1,df5$CA2,df6$CA1,df6$CA2)

counts回顾我最初的问题,这一部分是谁做的:矩阵(c(计数[j,7],计数[j,(8)],计数[j,7],计数[j,(8)],nrow=2,ncol=2,byrow=TRUE)