我有一组数字和给定的平均值。我需要找到最有效的方法来找到这些数字的组合,这将给出目标均值。
_(\d{6})_
我正在考虑使用numbers<-c(8.05,7.59,5.52,6.73,8.01,7.44,7.35,7.42,6.05)
target_mean<-7.34
函数(combn
包)来生成所有可能的数字组合,然后找到所有这些数字的均值并查看哪些符合我的目标均值,但我和#39;我想知道是否有更好的方法。问题还在于我不知道有多少这些数字构成我的目标平均值。
答案 0 :(得分:3)
正如Akrun所提到的,确切地匹配浮点数并不容易。但是,这里是如何找到目标上下的平均值+/- 0.01的组合:
target_mean<-7.34
numbers<-c(8.05,7.59,5.52,6.73,8.01,7.44,7.35,7.42,6.05)
res <- Map(combn, list(numbers), seq_along(numbers), simplify = FALSE)
res2 <- unlist(res, recursive = FALSE)[lapply(unlist(res, recursive = FALSE),mean)<(target_mean+.01)&
lapply(unlist(res, recursive = FALSE),mean)>(target_mean-.01)]
res2
[[1]]
[1] 8.05 7.59 5.52 8.01 7.44 7.42
[[2]]
[1] 8.05 7.59 5.52 8.01 7.44 7.35 7.42
sapply(res2,mean)
[1] 7.33833 7.34000