Если у вас есть 6 функций и вы хотите запустить все возможные их комбинации, то будет 2 ^ 6 = 64 возможных комбинаций. Они эквивалентны числам 0-63, представленным в виде 6-битных двоичных чисел, где 000000
равно нулю, а 111111
равно 63. Поэтому все, что вам нужно сделать, чтобы перечислить все возможности, - это присвоить каждой функции бит флага (от 1 до 6), затем l oop от 0 до 63 и условно запустить каждую функцию в соответствии с наличием ее бита флага. Следующая небольшая вспомогательная функция сделает это проще:
check_bit <- function(x, n_bit) !(as.numeric(as.raw(2^(n_bit - 1)) & as.raw(x)) == 0)
Давайте рассмотрим пример того, как запустить все комбинации группы функций, используя это:
for(j in 0:63){
if(check_bit(j, 1)) cat("a")
if(check_bit(j, 2)) cat("b")
if(check_bit(j, 3)) cat("c")
if(check_bit(j, 4)) cat("d")
if(check_bit(j, 5)) cat("e")
if(check_bit(j, 6)) cat("f")
cat("\n")
}
#>
#> a
#> b
#> ab
#> c
#> ac
#> bc
#> abc
#> d
#> ad
#> bd
#> abd
#> cd
#> acd
#> bcd
#> abcd
#> e
#> ae
#> be
#> abe
#> ce
#> ace
#> bce
#> abce
#> de
#> ade
#> bde
#> abde
#> cde
#> acde
#> bcde
#> abcde
#> f
#> af
#> bf
#> abf
#> cf
#> acf
#> bcf
#> abcf
#> df
#> adf
#> bdf
#> abdf
#> cdf
#> acdf
#> bcdf
#> abcdf
#> ef
#> aef
#> bef
#> abef
#> cef
#> acef
#> bcef
#> abcef
#> def
#> adef
#> bdef
#> abdef
#> cdef
#> acdef
#> bcdef
#> abcdef
Итак, ваш финальный l oop будет выглядеть примерно так:
for(i in seq(0.1, 0.9, by = 0.1)){
for(j in 0:63){
if(check_bit(j, 1)) tm_map(data, removeWords, stopwords("english"))
if(check_bit(j, 2)) tm_map(....)
if(check_bit(j, 3)) tm_map(....)
if(check_bit(j, 4)) tm_map(....)
if(check_bit(j, 5)) tm_map(....)
if(check_bit(j, 6)) tm_map(....)
removeSparseTerm(data, i)
<evaluation>
}
}