如何在R数据帧的每一行中创建固定数目为1的0和1的组合?

要创建0和1数据帧的组合,我们可以将expand.grid函数与rep函数一起使用。如果我们要在每行中创建固定数目为1的0和1的组合,则可以将rowSums函数与适当的总和值一起使用。例如,要使行包含少于三个1,则将rowSums从网格中提取出来。

例1

First<−expand.grid(rep(list(0:1),3))
First
输出结果
Var1 Var2 Var3
1 0 0 0
2 1 0 0
3 0 1 0
4 1 1 0
5 0 0 1
6 1 0 1
7 0 1 1
8 1 1 1

创建每行中小于或等于2的1的组合-

示例

First<−First[rowSums(First)<3,]
First
输出结果
Var1 Var2 Var3
1 0 0 0
2 1 0 0
3 0 1 0
4 1 1 0
5 0 0 1
6 1 0 1
7 0 1 1

例2

Second<−expand.grid(rep(list(0:1),4))
Second
输出结果
Var1 Var2 Var3 Var4
1  0  0 0 0
2  1  0 0 0
3  0   1 0 0
4  1   1 0 0
5  0   0 1 0
6  1  0 1 0
7  0   1 1 0
8  1   1 1 0
9  0 0 0 1
10 1 0 0 1
11 0 1 0 1
12 1 1 0 1
13 0 0 1 1
14 1 0 1 1
15 0 1 1 1
16 1 1 1 1

示例

Second<−Second[rowSums(Second)<4,]
Second
输出结果
Var1 Var2 Var3 Var4
1 0 0 0 0
2 1 0 0 0
3 0 1 0 0
4 1 1 0 0
5 0 0 1 0
6 1 0 1 0
7 0 1 1 0
8 1 1 1 0
9 0 0 0 1
10 1 0 0 1
11 0 1 0 1
12 1 1 0 1
13 0 0 1 1
14 1 0 1 1
15 0 1 1 1

范例3

Third<−expand.grid(rep(list(0:1),5))
Third
输出结果
Var1 Var2 Var3 Var4 Var5
1 0 0 0 0 0
2 1 0 0 0 0
3 0 1 0 0 0
4 1 1 0 0 0
5 0 0 1 0 0
6 1 0 1 0 0
7 0 1 1 0 0
8 1 1 1 0 0
9 0 0 0 1 0
10 1 0 0 1 0
11 0 1 0 1 0
12 1 1 0 1 0
13 0 0 1 1 0
14 1 0 1 1 0
15 0 1 1 1 0
16 1 1 1 1 0
17 0 0 0 0 1
18 1 0 0 0 1
19 0 1 0 0 1
20 1 1 0 0 1
21 0 0 1 0 1
22 1 0 1 0 1
23 0 1 1 0 1
24 1 1 1 0 1
25 0 0 0 1 1
26 1 0 0 1 1
27 0 1 0 1 1
28 1 1 0 1 1
29 0 0 1 1 1
30 1 0 1 1 1
31 0 1 1 1 1
32 1 1 1 1 1

示例

Third<−Third[rowSums(Third)<3,]
Third
输出结果
1 0 0 0 0 0
2 1 0 0 0 0
3 0 1 0 0 0
4 1 1 0 0 0
5 0 0 1 0 0
6 1 0 1 0 0
7 0 1 1 0 0
9 0 0 0 1 0
10 1 0 0 1 0
11 0 1 0 1 0
13 0 0 1 1 0
17 0 0 0 0 1
18 1 0 0 0 1
19 0 1 0 0 1
21 0 0 1 0 1
25 0 0 0 1 1