【问题标题】:Obtain all possible combinations of logical variables without specifying the number of elements [duplicate]在不指定元素数量的情况下获得逻辑变量的所有可能组合[重复]
【发布时间】:2019-07-11 19:55:34
【问题描述】:

我正在尝试获取向量的所有组合。我有

x <- c(1,2,3)

我需要在不指定所需元素数量且不考虑顺序的情况下获取所有可能的组合(解决方案{2,3,1}{1,2,3} 相同)。例如,结果将是:

{}
{3}
{2}
{2,3}
{1}
{1,3}
{1,2}
{1,2,3}

一个近似值是制作下表:

我确信必须有一些函数来执行此任务,而不是创建表并从中形成解决方案,因为它不是很乏味。

【问题讨论】:

  • 您正在寻找电源组。从库rje 中查看powerset 函数。
  • @JosephWood 哦,是的,这是我要找的,你可以把这个评论当作检查的答案吗?
  • 我无法发帖,因为这个问题已被标记为重复。不管怎样,我很高兴你能弄明白。

标签: r binary combinations


【解决方案1】:

使用expand.grid

out <- expand.grid(rep(list(c(1, 0)), length(x)))
out
#  Var1 Var2 Var3
#1    1    1    1
#2    0    1    1
#3    1    0    1
#4    0    0    1
#5    1    1    0
#6    0    1    0
#7    1    0    0
#8    0    0    0

如果我们需要组合 - 作为一个列表 - 我们可能会这样做

split(out * col(out), 1:nrow(out))
#$`1`
#[1] 1 2 3
#
#$`2`
#[1] 0 2 3
#
#$`3`
#[1] 1 0 3
#
#$`4`
#[1] 0 0 3
#
#$`5`
#[1] 1 2 0
#
#$`6`
#[1] 0 2 0
#
#$`7`
#[1] 1 0 0
#
#$`8`
#[1] 0 0 0

或者,如果我们不需要0s,我们可能会这样做

by(out * col(out), 1:nrow(out), FUN = function(x) x[x != 0])

bylapply(split(... 的缩写)

【讨论】:

  • 我可能没有解释清楚,我不需要创建表格,我需要创建组合,表格的使用是我接近解决方案的一个示例
  • @Draggluon 更新了我的答案。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多