强制 R 在 set_args 函数的参数中应用函数或调用变量

Forcing R to apply a function or call a variable inside an argument of set_args function

当我尝试使用索引来提取向量的元素或调用 parsnip 库的 set_args 函数内的函数时;

library(parsnip)
tree_numbers  = c(500, 1000)
boost_tree() %>% set_args(tree_depth = tree_numbers[1])

我遇到了这样的情况,上面代码的结果是;

Boosted Tree Model Specification (unknown)

Main Arguments:
  tree_depth = tree_numbers[1]

函数没有调用tree_numbers[1]的结果500,而是直接将tree_depth = tree_numbers[1]作为字符串。对于具有相同逻辑的任何其他函数的参数,我可以调用或提取 500 值。好像在set_args里输入什么都直接当成字符串然后函数解码

set_args函数中获取tree_numbers向量的元素500或1000的解决方案是什么?

您可以使用 bang bang 运算符拼接参数 !! :

library(parsnip)

tree_numbers  = c(500, 1000)
boost_tree() %>% set_args(tree_depth = !! tree_numbers[1])

#> Boosted Tree Model Specification (unknown)
#> 
#> Main Arguments:
#>   tree_depth = 500
#> 
#> Computational engine: xgboost

reprex package (v2.0.1)

于 2021-12-17 创建