2017-03-21 6 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

関連する問題