2017-03-21 24 views
0

我有一组数字和给定的均值。我需要找到最有效的方式来找到这些数字的组合,这将给出目标的意思。查找所有可以给出目标平均值的数字组合

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功能(combinat包),生成数字的所有可能的组合,然后找到办法为他们所有,看看哪些将匹配我的目标是说,但我想知道如果有一个更好的办法。问题在于,我不知道有多少这些数字构成了我的目标意思。

+1

浮点数的比较应该谨慎 – akrun

回答

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 
+0

这就是我一直在寻找。谢谢! – Liza