查找将给出目标均值的所有数字组合

时间:2017-03-21 17:43:53

标签: r combinations mean

我有一组数字和给定的平均值。我需要找到最有效的方法来找到这些数字的组合,这将给出目标均值。

_(\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;我想知道是否有更好的方法。问题还在于我不知道有多少这些数字构成我的目标平均值。

1 个答案:

答案 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