【问题标题】:Forcing R to apply a function or call a variable inside an argument of set_args function强制 R 在 set_args 函数的参数内应用函数或调用变量
【发布时间】: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 向量的元素?

【问题讨论】:

    标签: r string arguments eval r-parsnip


    【解决方案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 日创建

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2015-11-13
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多