【问题标题】:Finding all combinations of four numbers that equal a sum in R [duplicate]在R中找到等于和的四个数字的所有组合[重复]
【发布时间】:2015-06-18 09:59:32
【问题描述】:

有没有一种更有效的方法来确定 4 个数字的所有可能值,这些数字求和一个特定的值。我已经使用了以下内容,但是如果我将其扩展为每组超过 10 个或超过 4 个组,效率将很低

Grid <- expand.grid(a=seq(0, 100, 10), b= seq(0,100,10), c= seq(0,100,10), d=seq(0,100,10))
Grid$total <- apply(Grid, 1, sum)
Grid[Grid$total==100,]

我的实际应用程序,数字将是等于 1 的百分比,并且将按不少于 5 的间隔进行调整

【问题讨论】:

  • 您查看过combinat 包吗?您可以使用 combn 函数来生成每个数字组合(我假设效率很高),然后将符合您条件的总和子集。

标签: r


【解决方案1】:

我相信有很多解决方案,这里有一个 partitions 库,

library(partitions)
restrictedparts(10, 4, include.zero = FALSE)

# [1,] 7 6 5 4 5 4 3 4 3
# [2,] 1 2 3 4 2 3 3 2 3
# [3,] 1 1 1 1 2 2 3 2 2
# [4,] 1 1 1 1 1 1 1 2 2

这将是总和为 10(不包括 0)的 4 个整数。

【讨论】:

  • 哇,很棒的解决方案。谢谢!
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
相关资源
最近更新 更多