0
任意の項目がリスト内の他の項目の任意の組み合わせ(重複なし)の合計ではないベクトルを作成する関数を作成しようとしています。r非自己和のベクトル
この機能は仕事をしますが、かなり遅いです...どのように改善するかについての明るい考えはありますか?
sum_fun <- function(k)
{
out_list <- c(2,3,4)
new_num <- 4
while(length(out_list) < k)
{
new_num <- new_num + 1
#Check if new_num can be written as a sum of the terms in out_list
new_valid <- T
for (i in 2:(length(out_list) - 1)){
if (new_num %in% (apply(combn(out_list,i), FUN = sum, MAR = 2)))
{
new_valid <- F
break
}
}
if (new_valid)
{
out_list <- c(out_list, new_num)
}
}
return(out_list)
}
ありがとうございました!確かにはるかに高速です。しかし、大きなk(100またはそれ以上)の場合、私の問題はほぼ解決できなくなります。 –