我正在尝试在R中执行以下操作:获取类型
的每个向量 c(a1, a2, ... , a10)
,其中
a1 < a2 < ... < a10
和
a1, ... , a10 in c(1:100)
。
这可以使用嵌套循环,
for(a1 in 1:90) {
for(a2 in (a1+1):91) {
for(a3 in (a2+1):92) {
等...
但是你会明白为什么我宁愿避免这个解决方案。此外,我希望能够将a的数量和它们的范围都设置为可参数,以便获得例如(a1, a2, a3) in 1:10
有没有人知道我怎么能这样做?请记住,我确实需要浏览(a1:a10)
的所有可能组合,以便能够在以后的函数中使用结果。
答案 0 :(得分:2)
让问题从a1 < a2 < a3
1:5
减少到combn(5, 3)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 1 1 1 1 1 1 2 2 2 3
#[2,] 2 2 2 3 3 4 3 3 4 4
#[3,] 3 4 5 4 5 5 4 5 5 5
:
choose(5, 3)
#[1] 10
那是多少种组合?
choose(100, 10)
#[1] 1.731031e+13
如上所述,问题的组合是多少?
app = angular.module('app', ['ui.router'])
angular.element(document).ready(() => angular.bootstrap(document, ['app']))
import './controllers/index'
app.run(() => {
})
计算它们的次数太多了。
答案 1 :(得分:1)
喜欢这个吗?
sapply(0:10,"+",1:90)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
# [1,] 1 2 3 4 5 6 7 8 9 10 11
# [2,] 2 3 4 5 6 7 8 9 10 11 12
# [3,] 3 4 5 6 7 8 9 10 11 12 13
# [4,] 4 5 6 7 8 9 10 11 12 13 14
每列都是你的载体。第1列是1-90,第2列是2-91,......,第11列是11-100。
答案 2 :(得分:0)
你会有很多组合!
这是一个功能,但我不能使用1:100获得超过4个数字,而不会在我的计算机上长时间运行。
combn
通过seq(1:maxn)
使用来自getcombinations(3,4)
V1 V2 V3
1 1 2 3
2 1 2 4
3 1 3 4
4 2 3 4
的所有大小组合,然后重新排列一点来工作。
public class MyCollection {
public void add(String s) {
// add to inner array
}
}