如何在R包中使用':='运算符?

2ledvvac  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(427)

我想知道如何在R包中准确地使用下面的命令:

command <- "a + b"
dep <- "variable"

dplyr::tibble(a = rnorm(100),
              b = rnorm(100)) -> test

test %>% 
  dplyr::mutate(!!dep := eval(parse(text = command)))

# A tibble: 100 × 3
a         b          variable
<dbl>    <dbl>       <dbl>
  1 -0.940  -0.177    -1.12  
2  0.0340  1.03      1.07  
3  1.00    0.549     1.55  
4 -0.995  -2.60     -3.60  
5 -1.34    1.27     -0.0660
6 -0.315   0.00188  -0.313 
7 -1.30    2.27      0.966 
8 -1.22    0.682    -0.534 
9 -1.71    1.28     -0.427 
10 -0.407  -1.48     -1.89  
# … with 90 more rows
# ℹ Use `print(n = ...)` to see more rows

但是在运行R CMD检查时,我显然遇到了:=没有函数定义的问题:
no visible global function definition for ':='
我知道如何在一个包中正确地定义它吗?我已经看过glue包和这个:

rlang::`dyn-dots`

但是我似乎找不到一个好的方法来处理这个问题。有什么想法吗?我也很乐意考虑一个不使用操作符的解决方案。

xn1cxnb4

xn1cxnb41#

":=“是data.table包的一部分。要使用此运算符,您需要在R中加载data.table包。例如,在示例代码中,:=运算符将命令取消引号,将其转换为公式并应用于测试数据,将公式结果保存到a * variable列中,然后将dep赋值给test数据集中新列中的variable**。您还可能需要将测试数据转换为data.table格式。
希望能有所帮助

相关问题