在多个线程中使用caret::trainControl安全吗?

在多个线程中使用caret::trainControl安全吗?,r,parallel-processing,r-caret,R,Parallel Processing,R Caret,我反复使用caret::train函数来生成许多独立的模型。我让它并行运行,我想知道是否需要为caret::train的每次迭代创建caret::trainControl对象。在什么情况下,caret::train函数是否修改过trainControl对象 在代码中,我想它可以简化为 require(caret) models <- c("mpg ~ wt", "mpg ~ hp") # Do I have to do this? for (m in models) { tc &l

我反复使用caret::train函数来生成许多独立的模型。我让它并行运行,我想知道是否需要为caret::train的每次迭代创建caret::trainControl对象。在什么情况下,caret::train函数是否修改过trainControl对象

在代码中,我想它可以简化为

require(caret)

models <- c("mpg ~ wt", "mpg ~ hp")

# Do I have to do this?
for (m in models) {
  tc <- caret::trainControl(method="repeatedcv", number=5, repeats=5)
  model <- caret::train(as.formula(m), data=mtcars, trControl=tc, method="lm")
}

# Or can I get away with this
tc <- caret::trainControl(method="repeatedcv", number=5, repeats=5)
for (m in models) {
  model <- caret::train(as.formula(m), data=mtcars, trControl=tc, method="lm")
}
require(插入符号)

你能提供一个可复制的例子吗?事实上,如果您有一个可复制的示例,您可以运行这两个选项并查看它们的工作情况。我知道我可以针对特定的情况进行测试,但我想知道在一般情况下是否在caret::train下修改过caret::trainControl对象。我仍然更新了我的例子,谢谢!我认为,如果一个R函数修改环境中的一个对象,而没有在帮助文件中明确说明,这被认为是一种不好的做法。所以我非常肯定第二种选择是安全的。当然@missue是正确的。
trainControl
对象只是要传递给
train
的参数列表,无论选择何种型号。因此,您可以安全地使用第二个选项