问题是res对象(模型的结果,foo()返回的是nos被分配给cv对象。我猜有一个环境问题没有通过对象。有什么想法吗?
seed_inx <- 1:10
ntree <- seq(1000, 51000, 2500)
maxnodes <- c(seq(50, 900, 50), seq(1000, 10000, 500))
cv <- lapply(seed_inx, function(x1) {
lapply(ntree, function(x2) {
lapply(maxnodes, function(x3) {
print(sprintf("Seed: %s, ntree: %s, max_nd: %s", x1, x2, x3))
res <- paste(x1, x2, x3)
})
return(res)
})
return(res)
})
答案 0 :(得分:1)
您的代码提供了
# Error in FUN(c(1000, 3500, 6000, 8500, 11000, 13500, 16000, 18500, 21000, :
# object 'res' not found
正确,因为res
是最内部lapply
的本地,所以它在该匿名函数的末尾被销毁。但是在R中,函数返回最后一个计算表达式的值,因此您需要做的就是删除赋值和显式return()
调用。即:
cv <- lapply(seed_inx, function(x1) {
lapply(ntree, function(x2) {
lapply(maxnodes, function(x3) {
print(sprintf("Seed: %s, ntree: %s, max_nd: %s", x1, x2, x3))
paste("foobar", x1, x2, x3)
})
})
})
运行良好:
# [1] "Seed: 1, ntree: 1000, max_nd: 50"
# [1] "Seed: 1, ntree: 1000, max_nd: 100"
# [1] "Seed: 1, ntree: 1000, max_nd: 150"
# [...]
cv[[10]][[5]][[5]]
# [1] "foobar 10 11000 250"