如何循环 R 中长度为 n 的列表的长度为 k 的子集?
How to loop over subsets of length k of a list of length n in R?
我得到了两个数字 n
和 k
以及 0 < k < n
。
如何遍历所有可能的长度为 k 的子集组合?
例如我有 x <- 1:10
。
那我想做
for (y in c(c(1,2,3), c(1,2,4), c(1,2,5), ..., c(8, 9, 10))){
...
}
您可以使用 combn
获取所有子集的数组,然后使用 asplit
将其转换为列表。只需遍历此列表即可。
例如,下面的代码将打印出 x 的所有长度为 3 的子集:
x <- 1:10
n <- 10
k <- 3
subsets <- asplit(combn(n, k), 2)
for(i in subsets) {
print(x[i])
}
我得到了两个数字 n
和 k
以及 0 < k < n
。
如何遍历所有可能的长度为 k 的子集组合?
例如我有 x <- 1:10
。
那我想做
for (y in c(c(1,2,3), c(1,2,4), c(1,2,5), ..., c(8, 9, 10))){
...
}
您可以使用 combn
获取所有子集的数组,然后使用 asplit
将其转换为列表。只需遍历此列表即可。
例如,下面的代码将打印出 x 的所有长度为 3 的子集:
x <- 1:10
n <- 10
k <- 3
subsets <- asplit(combn(n, k), 2)
for(i in subsets) {
print(x[i])
}