r - 找出总和等于 2020 的 n 个值
问题描述
我有一个Vec
包含这些值的向量:
1721
979
366
299
675
1456
我正在努力寻找一种方法来获得n
(我最初想为n=2
)值的哪个组合的总和等于 2020。
在示例中很容易将其视为 1721 和 299 和 2020,但我的数据更长,我想概括为n
值,以便我有一个函数,我设置一个向量和一个值来选择数字的组合(它可以是 2,3,5,..)。我的输出是c(1721,299)
.
解决方案
您可以使用 获取输入数字的所有组合combn()
,这将返回一个矩阵,其中组合是列。那么你只需要取每一列的总和,看看哪一个等于你的目标。
Vec <- c(1721,
979,
366,
299,
675,
1456)
n <- 2
all_combinations <- combn(Vec,n)
all_combinations[,colSums(all_combinations) == 2020]
推荐阅读
- python - Python:不需要的分配
- sql-server - T-SQL 表名作为参数
- javascript - 是否可以从功能性子组件引用传递给父(类纯组件)
- python - 如何使用以下代码确定 xpath?
- java - (Hackerearth) NZEC 随机出现嵌套静态 Java 类 (Java 8)
- r - 将数据帧的数字列(到达和离开时间之间的差异)转换为分钟
- java - AsyncTask 不刷新 UI
- php - 通过键值 PHP 将一个数组拆分为多个数组
- python - 如何在 python 中使用 pandas 将 mm/dd/yy 转换为 yy/mm/dd?
- ios - UISearchBar 范围空白