r - 如何在 for 循环中定义模型名称?
问题描述
我想在不同的样本上训练 n 个随机森林。样品 1 给出 rf1,样品 2 给出 rf2,以此类推。
但是这种代码不起作用(“闭包”类型的错误对象不是子集)
for (i in 1:3) {
rf$i <- train(Y~.,data=trainingData,method="rf",
ntree = 100,
tuneGrid=data.frame(mtry = mtry),
trControl = controle,
metric='ROC')
}
如何创建 n 个随机森林模型?此致 Loïc
解决方案
它不起作用,因为rf
尚不存在并且您不能对其进行子集化。
1. 使用列表作为容器
以下应该工作。
# define the length of your random forest trials
N = 3
rf = vector( "list", N)
for (i in seq_len( N ) {
rf[[ i ]] <- train( Y ~. , data = trainingData, method = "rf",
ntree = 100,
tuneGrid=data.frame(mtry = mtry),
trControl = controle,
metric='ROC')
}
上面的代码存储了一个rf
包含三个元素的列表N
。rf[[ 1 ]]
您可以使用, rf[[ 2 ]]
,访问每个对象rf[[ 3 ]]
。
2.独立存储对象
如果你想rf
在你的全局环境中物理存储独立的对象,你必须使用assign()
如下:
# define the length of your random forest trials
N = 3
for (i in seq_len( N ) {
assign( paste0( "rf", i) ,
train( Y ~. ,
data = trainingData, method = "rf",
ntree = 100,
tuneGrid=data.frame(mtry = mtry),
trControl = controle,
metric='ROC')
}
这将三个对象rf1
、rf2
和存储rf3
在您的环境中,您可以独立处理它们。
推荐阅读
- c++ - 自动生成 cmake 到 .vcxproj 文件
- java - 我将如何创建一个需要每个课程与自己的主题一起去的课程列表?
- javascript - Uncaught (in promise) 是什么意思?
- tensorflow2.0 - Ray Tensorflow-gpu 2.0 RecursionError
- c++ - Horners Law需要代数帮助,显示错误答案c ++
- r - 使用 R 对 Sankey/Alluvial 图中的一些变量进行美化和排序
- json - 如何动态更改 Python API 调用中的参数
- html - 为不同的操作系统使用深度链接和不同的超链接(用户端)
- sql-server - 如何在 Amazon Linux AMI 中使用 pyodbc 连接到 RDS SQL 服务器?
- excel - 使用 excel vba 添加数据透视表