如何为R中的函数参数自动化多次迭代/组合?

时间:2016-06-07 17:50:03

标签: r function automation arguments iteration

我对R有点新,我目前正在尝试自动化R中函数参数的所有可能迭代。我的意思是说我们有一个函数有五个参数,可以是{{ 1}}或TRUE。我想运行这些参数的所有可能组合,并将它们全部转储到几个不同的变量。

给定参数的数量及其二元性质(10个可能的参数,选择5),这将为函数创建252个可能的参数组合。有没有办法自动化这个过程?或者我是否在代码行中生成所有252种可能的组合?我正在使用auto.arima函数,并希望测试FALSElambdaallowmeanallowdriftseasonal的所有可能组合。这是功能:

stationary

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用expand.grid构建具有所有可能组合的data.frame,然后循环遍历此data.frame的行并填写值。

以下是一个例子:

x <- 1:5
y <- 2:6
z <- c(1,3)
aa <- letters[7:10]
w <- c(FALSE, TRUE)

myInputs <- expand.grid(x, y, z, aa, w)

for(i in seq_len(nrow(myInputs))) {
  print(myInputs[i, 1] + myInputs[i, 2] + myInputs[i, 3])
}

您可以使用这些输入来提供您想要的任何功能。

由于expand.grid输出data.frame,因此混合矢量类型(如数字,逻辑,字符)没有问题。

但是,如果要输入字符向量,并且希望它们保留字符(而不是转换为因子变量,请确保包含stringsAsFactors = FALSE参数。