我对R有点新,我目前正在尝试自动化R中函数参数的所有可能迭代。我的意思是说我们有一个函数有五个参数,可以是{{ 1}}或TRUE
。我想运行这些参数的所有可能组合,并将它们全部转储到几个不同的变量。
给定参数的数量及其二元性质(10个可能的参数,选择5),这将为函数创建252个可能的参数组合。有没有办法自动化这个过程?或者我是否在代码行中生成所有252种可能的组合?我正在使用auto.arima函数,并希望测试FALSE
,lambda
,allowmean
,allowdrift
和seasonal
的所有可能组合。这是功能:
stationary
答案 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参数。