我有一组 n 个变量,每个变量都可以取 0 或 1 的值。我想使用 R 来获取一个由所有可能的矩阵(或数据框等,没关系)组成的矩阵n 个值的排列。例如,如果 n=3,可能的值为:
111
110
101
100
010
011
001
000
我怎样才能在 R 中做到这一点?
最佳答案
您可以使用expand.grid
来做到这一点。
expand.grid(0:1,0:1,0:1)
输出:
# 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
如果您想将其粘贴为一项,则可以选择:
do.call("paste0", expand.grid(0:1,0:1,0:1))
这会导致:
[1] "000" "100" "010" "110" "001" "101" "011"
[8] "111"
另外,正如 @Jilber Urbina 所建议的,可以使用:expand.grid(1:0,1:0,1:0)[3:1]
来获得不同的顺序
概括解决方案:
还可以这样做: expand.grid(rep(list(0:1), 3))
,这里 3 是重复次数,所以有人可以将其更改为 20 或 100 基础他们的需求。
替代方法:
gtools::permutations(n=2,r=3, v=0:1, repeats.allowed = T)
关于r - R 中 n 个伯努利随机变量的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50180421/