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

Posted

技术标签:

【中文标题】强制 R 在 set_args 函数的参数内应用函数或调用变量【英文标题】:Forcing R to apply a function or call a variable inside an argument of set_args function 【发布时间】:2022-01-20 10:32:57 【问题描述】:

当我尝试使用索引来提取向量的元素或调用欧洲萝卜库的 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_depth = tree_numbers[1]作为字符串调用,而不是调用tree_numbers[1]的结果500。对于具有相同逻辑的任何其他函数的参数,我可以调用或提取 500 值。似乎在 set_args 中输入的任何内容都直接作为字符串,然后函数对其进行解码。

这种情况的解决方案是在set_args 函数中获得500 或1000 个tree_numbers 向量的元素?

【问题讨论】:

【参考方案1】:

您可以使用 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 日创建

【讨论】:

以上是关于强制 R 在 set_args 函数的参数内应用函数或调用变量的主要内容,如果未能解决你的问题,请参考以下文章

R:优化错误:“列表”对象不能被强制输入“双”

装饰器

如何在一天内的特定时间段内应用累积python函数,然后从第二天开始重置

如何强制调用某些构造函数/函数以使用命名参数?

在 Python 中强制使用函数参数类型?

在 C++ 中是不是可以强制执行字符串文字函数参数?