R 忽略循环的不同迭代中的代码

R 忽略循环的不同迭代中的代码,r,R,我有六行代码,它们都对数据集进行了一些预处理。现在我想找出哪种组合效果最好。除此之外,另一个预处理需要一个数值参数(removeSparseTerms()),因此也必须将其组合起来 我想做的是运行for循环或类似的方法来评估所有可能的组合: for(i in seq(0.1, 0.9, by = 0.1)){ tm_map(data, removeWords, stopwords("english")) tm_map(....) tm_map(....) tm_map(....)

我有六行代码,它们都对数据集进行了一些预处理。现在我想找出哪种组合效果最好。除此之外,另一个预处理需要一个数值参数(removeSparseTerms()),因此也必须将其组合起来

我想做的是运行for循环或类似的方法来评估所有可能的组合:

for(i in seq(0.1, 0.9, by = 0.1)){
  tm_map(data, removeWords, stopwords("english"))
  tm_map(....)
  tm_map(....)
  tm_map(....)
  tm_map(....)
  tm_map(....)

  removeSparseTerm(data, i)

  <evaluation>
}
for(序列中的i(0.1,0.9,by=0.1)){
tm_地图(数据、删除词、停止词(“英语”))
tm_地图(…)
tm_地图(…)
tm_地图(…)
tm_地图(…)
tm_地图(…)
removeSparseTerm(数据,i)
}
我的问题是,我不知道如何让它跳过代码行,也就是说,在第一次迭代中,它不应该运行任何tm_map(),在第二次迭代中,它不应该运行任何tm_map(),等等。这还应该包括不同tm_map行的组合。
最好的方法是什么?如果语句似乎太长而难以编写。

如果您有6个函数,并且希望运行它们的所有可能组合,那么将有2^6=64个可能组合。它们相当于表示为6位二进制数的数字0-63,其中
000000
为零,
111111
为63。因此,枚举所有可能性所需要做的就是为每个函数分配一个标志位(1到6),然后从0到63循环,并根据其标志位是否存在有条件地运行每个函数。以下little helper函数将简化此操作:


检查一下我不太明白。。。预处理需要所有步骤,或者其中任何一个都可以,或者您认为它们的某些组合可以工作,但您不确定,任何组合都可以工作?还有,你所说的“效果最好”是什么意思。如果您的意思是,工作速度最快,那么使用
工作台
软件包可能会有所帮助,特别是
功能如果您尝试使用不同的参数,则所有步骤都是可选的,任何组合都有效。“最有效”是代码进一步深化的结果。我可以在所有情况下使用相同的代码来确定。
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>
  }
}