如何解决在dplyr函数调用中使用=内部bquote
a <- "A"
bquote(tibble::tibble(a = 1:10) %>% dplyr::mutate(`=`(.(as.name(a)),a*2))) %>% eval()
# A tibble: 10 x 2
a `A = a * 2`
<int> <dbl>
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20
很显然,列名不正确。应该是A。
但是,如果我这样做:
a <- "A"
bquote(tibble::tibble(a = 1:10) %>% dplyr::mutate(.(as.name(a)) = a*2)) %>% eval()
Error: unexpected '=' in "bquote(tibble::tibble(a = 1:10) %>% dplyr::mutate(.(as.name(a)) ="
解决方法
tidyverse工具有自己的元编程方式,不涉及bquote
和eval()
。相反,您会这样做
tibble::tibble(!!a := 1:10) %>% dplyr::mutate(!!a := .data[[a]]*2)
:=
让您动态分配参数名称。有关更多信息,请查看vignette("programming","dplyr")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。