要在 R 中具有相同列的两个数据框中创建行的组合,我们可以按照以下步骤操作 -
首先,创建两个数据框。
然后,将数据框中的行expand.grid与 do.call 和 cbind组合起来。
让我们创建一个数据框,如下所示 -
Class<-sample(c("I","II","III"),6,replace=TRUE) Score<-sample(1:20,6) df1<-data.frame(Class,Score) df1
执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-
Class Score 1 III 1 2 III 13 3 III 10 4 I 2 5 II 7 6 II 17
让我们创建另一个数据框 df2,如下所示 -
Class<-sample(c("I","II","III"),6,replace=TRUE) Score<-sample(1:20,6) df2<-data.frame(Class,Score) df2
Class Score 1 III 2 2 I 1 3 III 7 4 III 15 5 I 12 6 III 13
使用 cbind 函数expand.grid和do.call函数来组合 df1 和 df2 中的行 -
Class<-sample(c("I","II","III"),6,replace=TRUE) Score<-sample(1:20,6) df1<-data.frame(Class,Score) Class<-sample(c("I","II","III"),6,replace=TRUE) Score<-sample(1:20,6) df2<-data.frame(Class,Score) do.call(cbind.data.frame,Map(expand.grid,df1=df1,df2=df2))
Class.df1 Class.df2 Score.df1 Score.df2 1 III III 1 2 2 III III 13 2 3 III III 10 2 4 I III 2 2 5 II III 7 2 6 II III 17 2 7 III I 1 1 8 III I 13 1 9 III I 10 1 10 I I 2 1 11 II I 7 1 12 II I 17 1 13 III III 1 7 14 III III 13 7 15 III III 10 7 16 I III 2 7 17 II III 7 7 18 II III 17 7 19 III III 1 15 20 III III 13 15 21 III III 10 15 22 I III 2 15 23 II III 7 15 24 II III 17 15 25 III I 1 12 26 III I 13 12 27 III I 10 12 28 I I 2 12 29 II I 7 12 30 II I 17 12 31 III III 1 13 32 III III 13 13 33 III III 10 13 34 I III 2 13 35 II III 7 13 36 II III 17 13