【发布时间】:2013-08-17 18:40:17
【问题描述】:
假设我有一个 20 X 5 矩阵,我想选择矩阵的子集并对它们进行一些计算。进一步假设每个子矩阵是 7 X 5。我当然可以这样做
ncomb <- combn(20, 7)
它为我提供了 7 个行索引的所有可能组合,我可以使用它们来获得子矩阵。但是对于一个小的 20 X 5 矩阵,已经有 77520 种可能的组合。所以我想随机抽取一些组合,例如其中的 5000 个。
一种可能性如下:
ncomb <- combn(20, 7)
ncombsub <- ncomb[, sample(77520, 5000)]
也就是说,我获得了所有可能的组合,然后随机选择其中的 5000 个组合。但我想,如果我有一个更大的矩阵——比如 100 X 7,那么计算所有可能的组合会有问题。
所以我想知道是否有一种方法可以在不首先获得所有可能的组合的情况下获得组合的子集。
【问题讨论】:
-
是的,我认为这可以通过修改
combn或编写自己的函数(这可能更容易)来实现。为此提出一个算法并实施它应该不难。 -
您可能想查看相关帖子here
-
@Roland 我最终按照您的建议修改了
combn()。效果很好。
标签: r combinations