我正在研究一个可以给出向量 a 的函数,找到一组值 b,其中 a 中的值的平均距离> 到 b 中最接近的值是最小的。换句话说,我想找到分布中固定数量点的理想分布,因此平均距离最小。我希望这个解释对人们有意义。
下面的函数接受两个参数:向量 a 和 p,它是 b 的长度。它在 p = 2 时按预期工作,但对于任何更大数量的 p 都会产生错误(请参阅下面的错误)。该错误对我来说毫无意义,因为这两个向量不可能有不同的长度。 (mc)lapply running Closest over the vector a 应该总是产生一个与 a 长度相同的向量,所以我不知道如何解决这个问题。
library(DescTools)
library(stats)
library(parallel)
party_opt <- function(a, p) {
dist_f <- function(a, b) {
dist <- mean(abs(a - unlist(mclapply(a, function(i) Closest(x = b, a = i)), use.names=FALSE)))
return(dist)
}
out <- optim(par = rep(min(a),p), fn = dist_f, a = a)
return(out)
}
这是两个以上的值发生的错误。
警告信息:
<块引用>1:在人中 - unlist(mclapply(a, function(i) Closest(x = b, a = i)), : 较长的物体长度不是较短物体长度的倍数