首页 > 解决方案 > 如何创建逻辑向量的排列?

问题描述

是否有一个函数可以帮助我输出长度为 n 的布尔向量的所有 2^n 排列?例如,如果我有一个长度为 n=2 的布尔向量 c(FALSE,FALSE),我应该获得 2^2=4 个排列。

因此,我需要一个函数,它将这个输出概括为长度为 n 的数组,这意味着如果 n=3,输出的长度应该是 2^3 等等......

我已经尝试过 gtools 包中的排列,但这似乎是不正确的,或者至少可以提供部分答案。这种方法不能很好地概括,并且在 n>2 时也给了我错误。

> permutations(2,2,c(TRUE,FALSE))
      [,1]  [,2]
[1,] FALSE  TRUE
[2,]  TRUE FALSE

输出应该是:

FALSE, FALSE,
TRUE, TRUE,
FALSE, TRUE,
TRUE, FALSE

标签: r

解决方案


你可以使用expand.grid

expand.grid(c(TRUE, FALSE), c(TRUE, FALSE))
#   Var1  Var2
#1  TRUE  TRUE
#2 FALSE  TRUE
#3  TRUE FALSE
#4 FALSE FALSE

推荐阅读