R vector-从两个向量的差中求出最大正结果的计数
我有两个向量R vector-从两个向量的差中求出最大正结果的计数,r,vector,count,R,Vector,Count,我有两个向量 A = c(28427,19877,30709,18527,17409,14758,20873,18458,28587,17751,21672) 在不使用任何外部库的情况下,我需要以这种方式对A和B进行排序,以获得差分这两个向量后获得的+ve结果的最大可能计数 这里的结果应该是9,因为最多有9个结果将被证明是积极的 我尝试使用分治,但它需要很多时间来解决,而且我没有得到最佳逻辑。a=c(28427198773070918527174091475820873184588587177
A = c(28427,19877,30709,18527,17409,14758,20873,18458,28587,17751,21672)
在不使用任何外部库的情况下,我需要以这种方式对A和B进行排序,以获得差分这两个向量后获得的+ve结果的最大可能计数
这里的结果应该是9,因为最多有9个结果将被证明是积极的
我尝试使用分治,但它需要很多时间来解决,而且我没有得到最佳逻辑。a=c(284271987730709185271740914758208731845885871775121672)
a = c(28427,19877,30709,18527,17409,14758,20873,18458,28587,17751,21672)
b = c(407,2019,10539,15430,17994,20213,21865,26217,26619,30558,31674)
a_sorted <- sort(a, decreasing = T)
b_sorted <- sort(b, decreasing = T)
out <- data.frame(matrix(0, ncol = 3))
names(out) <- c("a", "b", "d")
k <- 1
j <- 1
for (i in 1:length(a)) {
while (j <= length(a)) {
d <- a_sorted[i] - b_sorted[j]
# message(sprintf("i = %d; j = %d k = %d;\taa[i] = %s\tbb[j] = %s\td[k] = %s", i, j, k, a_sorted[i], b_sorted[j], d))
if (d > 0) {
out[k,] <- c(a_sorted[i], b_sorted[j], d)
k <- k + 1
j <- j + 1
break
}
j <- j + 1
}
}
out
#> a b d
#> 1 30709 30558 151
#> 2 28587 26619 1968
#> 3 28427 26217 2210
#> 4 21672 20213 1459
#> 5 20873 17994 2879
#> 6 19877 15430 4447
#> 7 18527 10539 7988
#> 8 18458 2019 16439
#> 9 17751 407 17344
b=c(4072019105391543017994202132186526217266193055831674)
a_59143。你所尝试的&你得到的输出;2.预期产量?(不是图像,而是代码)?
a = c(28427,19877,30709,18527,17409,14758,20873,18458,28587,17751,21672)
b = c(407,2019,10539,15430,17994,20213,21865,26217,26619,30558,31674)
a_sorted <- sort(a, decreasing = T)
b_sorted <- sort(b, decreasing = T)
out <- data.frame(matrix(0, ncol = 3))
names(out) <- c("a", "b", "d")
k <- 1
j <- 1
for (i in 1:length(a)) {
while (j <= length(a)) {
d <- a_sorted[i] - b_sorted[j]
# message(sprintf("i = %d; j = %d k = %d;\taa[i] = %s\tbb[j] = %s\td[k] = %s", i, j, k, a_sorted[i], b_sorted[j], d))
if (d > 0) {
out[k,] <- c(a_sorted[i], b_sorted[j], d)
k <- k + 1
j <- j + 1
break
}
j <- j + 1
}
}
out
#> a b d
#> 1 30709 30558 151
#> 2 28587 26619 1968
#> 3 28427 26217 2210
#> 4 21672 20213 1459
#> 5 20873 17994 2879
#> 6 19877 15430 4447
#> 7 18527 10539 7988
#> 8 18458 2019 16439
#> 9 17751 407 17344