0

当我尝试使用索引来提取向量的元素或调用 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 中输入什么,它都被直接当作字符串,然后函数对其进行解码。

这种情况的解决方案是什么来获得 500 或 1000 是函数tree_numbers内部向量的元素set_args

4

1 回答 1

3

您可以使用 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 包于 2021-12-17 创建(v2.0.1)

于 2021-12-17T14:05:11.257 回答