我想知道如何在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`
但是我似乎找不到一个好的方法来处理这个问题。有什么想法吗?我也很乐意考虑一个不使用操作符的解决方案。
1条答案
按热度按时间xn1cxnb41#
":=“是data.table包的一部分。要使用此运算符,您需要在R中加载data.table包。例如,在示例代码中,:=运算符将命令取消引号,将其转换为公式并应用于测试数据,将公式结果保存到a * variable列中,然后将dep赋值给test数据集中新列中的variable**。您还可能需要将测试数据转换为data.table格式。
希望能有所帮助