我正在 R 中创建一个“成对”数组。给定 vector combo
,我找到了 4 个元素的每个排列。因此,一个4 维“成对”数组。我目前的方法是使它成为一个简单的list
,使用嵌套sapply
函数,如下所示:
fourList <- sapply(X = combo, FUN = function(h) {
hi <- which(combo == h) #get index of h
sapply(X = combo[hi:n], FUN = function(i) {
ii <- which(combo == i) #get index of i
sapply(X = combo[ii:n], FUN = function(j) {
ji <- which(combo == j) #get index of j
sapply(X = combo[ji:n], FUN = function(k) {
list(c(h,i,j,k))
})
})
})
})
我想做某种进度指示器,这样我就可以向用户报告已经构建了多少百分比的数组。理想情况下,我只需numberCasesCompleted
将其除以totalCases = length(combo)^4
得到完成的部分。但是,我似乎无法找出一个算法来接受hi
、ji
和ii
,并输出 value numberCasesCompleted
。我该如何计算?
在 2D ( x
by y
) 情况下 (例如: sapply(X, function(x) {sapply(X[xi:n], function(y) {list(c(x,y))}}
),这可以通过 计算sum(n - (x-2:x), y-(x-1))
,但将其推广到 4 维听起来相当困难。