我正在 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 ( xby y) 情况下 (例如: sapply(X, function(x) {sapply(X[xi:n], function(y) {list(c(x,y))}}),这可以通过 计算sum(n - (x-2:x), y-(x-1)),但将其推广到 4 维听起来相当困难。