Skip to content

Commit d2bc923

Browse files
author
julianstanley
committed
update dplyr functions to use non-standard evaluation
1 parent 8d376d1 commit d2bc923

File tree

6 files changed

+34
-84
lines changed

6 files changed

+34
-84
lines changed

R/add.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ add_sf <- function(p, ..., x = ~x, y = ~y, data = NULL, inherit = TRUE) {
334334
y = y,
335335
`_bbox` = bbox,
336336
set = set,
337-
data = if ("group" %in% names(d[[i]])) group_by_(d[[i]], "group", add = TRUE) else d[[i]],
337+
data = if ("group" %in% names(d[[i]])) group_by(d[[i]], rlang::sym("group"), .add = TRUE) else d[[i]],
338338
inherit = inherit
339339
)
340340
args <- modify_list(args, attrs)

R/ggplotly.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ gg2list <- function(p, width = NULL, height = NULL,
495495
)
496496
}
497497
# anchor X axis to the lowest plot in its column
498-
layout$layout <- dplyr::group_by_(layout$layout, "xaxis")
498+
layout$layout <- dplyr::group_by(layout$layout, !!rlang::sym("xaxis"))
499499
layout$layout <- dplyr::mutate(layout$layout, xanchor = max(as.integer(yaxis)))
500500
}
501501
layout$layout <- as.data.frame(layout$layout)
@@ -1088,7 +1088,7 @@ gg2list <- function(p, width = NULL, height = NULL,
10881088
# translate group aesthetics to data attributes
10891089
return_dat <- Map(function(x, y) {
10901090
if (is.null(y[["group"]])) return(x)
1091-
dplyr::group_by_(x, y[["group"]])
1091+
dplyr::group_by(x, !!rlang::as_quosure(y[["group"]]))
10921092
}, return_dat, mappingFormulas)
10931093

10941094
# don't need to add group as an attribute anymore

R/imports.R

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -24,60 +24,30 @@ NULL
2424
#' @export
2525
dplyr::mutate
2626

27-
#' @importFrom dplyr mutate_
28-
#' @name mutate_
29-
#' @rdname reexports
30-
#' @export
31-
dplyr::mutate_
32-
3327
#' @importFrom dplyr transmute
3428
#' @name transmute
3529
#' @rdname reexports
3630
#' @export
3731
dplyr::transmute
3832

39-
#' @importFrom dplyr transmute_
40-
#' @name transmute_
41-
#' @rdname reexports
42-
#' @export
43-
dplyr::transmute_
44-
4533
#' @importFrom dplyr select
4634
#' @name select
4735
#' @rdname reexports
4836
#' @export
4937
dplyr::select
5038

51-
#' @importFrom dplyr select_
52-
#' @name select_
53-
#' @rdname reexports
54-
#' @export
55-
dplyr::select_
56-
5739
#' @importFrom dplyr rename
5840
#' @name rename
5941
#' @rdname reexports
6042
#' @export
6143
dplyr::rename
6244

63-
#' @importFrom dplyr rename_
64-
#' @name rename_
65-
#' @rdname reexports
66-
#' @export
67-
dplyr::rename_
68-
6945
#' @importFrom dplyr group_by
7046
#' @name group_by
7147
#' @rdname reexports
7248
#' @export
7349
dplyr::group_by
7450

75-
#' @importFrom dplyr group_by_
76-
#' @name group_by_
77-
#' @rdname reexports
78-
#' @export
79-
dplyr::group_by_
80-
8151
#' @importFrom dplyr groups
8252
#' @name groups
8353
#' @rdname reexports
@@ -96,72 +66,35 @@ dplyr::ungroup
9666
#' @export
9767
dplyr::summarise
9868

99-
#' @importFrom dplyr summarise_
100-
#' @name summarise_
101-
#' @rdname reexports
102-
#' @export
103-
dplyr::summarise_
104-
10569
#' @importFrom dplyr do
10670
#' @name do
10771
#' @rdname reexports
10872
#' @export
10973
dplyr::do
11074

111-
#' @importFrom dplyr do_
112-
#' @name do_
113-
#' @rdname reexports
114-
#' @export
115-
dplyr::do_
116-
11775
#' @importFrom dplyr arrange
11876
#' @name arrange
11977
#' @rdname reexports
12078
#' @export
12179
dplyr::arrange
122-
123-
#' @importFrom dplyr arrange_
124-
#' @name arrange_
125-
#' @rdname reexports
126-
#' @export
127-
dplyr::arrange_
128-
12980
#' @importFrom dplyr distinct
13081
#' @name distinct
13182
#' @rdname reexports
13283
#' @export
13384
dplyr::distinct
13485

135-
#' @importFrom dplyr distinct_
136-
#' @name distinct_
137-
#' @rdname reexports
138-
#' @export
139-
dplyr::distinct_
140-
14186
#' @importFrom dplyr slice
14287
#' @name slice
14388
#' @rdname reexports
14489
#' @export
14590
dplyr::slice
14691

147-
#' @importFrom dplyr slice_
148-
#' @name slice_
149-
#' @rdname reexports
150-
#' @export
151-
dplyr::slice_
152-
15392
#' @importFrom dplyr filter
15493
#' @name filter
15594
#' @rdname reexports
15695
#' @export
15796
dplyr::filter
15897

159-
#' @importFrom dplyr filter_
160-
#' @name filter_
161-
#' @rdname reexports
162-
#' @export
163-
dplyr::filter_
164-
16598
# waiting on https://github.com/tidyverse/tidyr/pull/229
16699
#
167100
# #' @importFrom tidyr gather

R/plotly_build.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ train_data <- function(data, trace) {
561561
idx2 <- seq.int(2, NROW(dat), by = 2)
562562
dat[idx2, "x"] <- data[["xend"]]
563563
dat[idx2, "y"] <- data[["yend"]]
564-
data <- dplyr::group_by_(dat, ".plotlyGroupIndex", add = TRUE)
564+
data <- dplyr::group_by(dat, rlang::sym(".plotlyGroupIndex"), .add = TRUE)
565565
}
566566

567567
# TODO: a lot more geoms!!!

R/plotly_data.R

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,11 @@ ungroup.plotly <- function(x, ...) {
121121
#' @export
122122
group_by_.plotly <- function(.data, ..., .dots, add = FALSE) {
123123
d <- plotly_data(.data)
124-
d2 <- dplyr::group_by_(d, .dots = lazyeval::all_dots(.dots, ...), add = add)
124+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
125+
d2 <- dplyr::group_by(d, !!!additional_args, .add = add)
125126
# add crosstalk key as a group (to enable examples like demos/highlight-pipeline.R)
126127
if (crosstalk_key() %in% names(d)) {
127-
d2 <- dplyr::group_by_(d2, crosstalk_key(), add = TRUE)
128+
d2 <- dplyr::group_by(d2, !!crosstalk_key(), add = TRUE)
128129
}
129130
add_data(.data, d2)
130131
}
@@ -133,7 +134,8 @@ group_by_.plotly <- function(.data, ..., .dots, add = FALSE) {
133134
#' @export
134135
summarise_.plotly <- function(.data, ..., .dots) {
135136
d <- plotly_data(.data)
136-
d <- dplyr::summarise_(d, .dots = lazyeval::all_dots(.dots, ...))
137+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
138+
d <- dplyr::summarise(d, !!!additional_args)
137139
add_data(.data, d)
138140
}
139141

@@ -145,7 +147,7 @@ mutate_.plotly <- function(.data, ..., .dots) {
145147
# '.' in a pipeline should really reference the data!!
146148
lapply(dotz, function(x) { assign(".", d, x$env) })
147149
set <- attr(d, "set")
148-
d <- dplyr::mutate_(d, .dots = dotz)
150+
d <- dplyr::mutate(d, !!!as_quosures_explicit(dotz))
149151
add_data(.data, structure(d, set = set))
150152
}
151153

@@ -157,63 +159,70 @@ do_.plotly <- function(.data, ..., .dots) {
157159
# '.' in a pipeline should really reference the data!!
158160
lapply(dotz, function(x) { assign(".", d, x$env) })
159161
set <- attr(d, "set")
160-
d <- dplyr::do_(d, .dots = dotz)
162+
d <- dplyr::do(d, !!!as_quosures_explicit(dotz))
161163
add_data(.data, structure(d, set = set))
162164
}
163165

164166
#' @rdname plotly_data
165167
#' @export
166168
arrange_.plotly <- function(.data, ..., .dots) {
167169
d <- plotly_data(.data)
168-
d <- dplyr::arrange_(d, .dots = lazyeval::all_dots(.dots, ...))
170+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
171+
d <- dplyr::arrange(d, !!!additional_args)
169172
add_data(.data, d)
170173
}
171174

172175
#' @rdname plotly_data
173176
#' @export
174177
select_.plotly <- function(.data, ..., .dots) {
175178
d <- plotly_data(.data)
176-
d <- dplyr::select_(d, .dots = lazyeval::all_dots(.dots, ...))
179+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
180+
d <- dplyr::select(d, !!!additional_args)
177181
add_data(.data, d)
178182
}
179183

180184
#' @rdname plotly_data
181185
#' @export
182186
filter_.plotly <- function(.data, ..., .dots) {
183187
d <- plotly_data(.data)
184-
d <- dplyr::filter_(d, .dots = lazyeval::all_dots(.dots, ...))
188+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
189+
d <- dplyr::filter(d, !!!additional_args)
185190
add_data(.data, d)
186191
}
187192

188193
#' @rdname plotly_data
189194
#' @export
190195
distinct_.plotly <- function(.data, ..., .dots) {
191196
d <- plotly_data(.data)
192-
d <- dplyr::distinct_(d, .dots = lazyeval::all_dots(.dots, ...))
197+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
198+
d <- dplyr::distinct(d, .dots = !!!additional_args)
193199
add_data(.data, d)
194200
}
195201

196202
#' @rdname plotly_data
197203
#' @export
198204
slice_.plotly <- function(.data, ..., .dots) {
199205
d <- plotly_data(.data)
200-
d <- dplyr::slice_(d, .dots = lazyeval::all_dots(.dots, ...))
206+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
207+
d <- dplyr::slice(d, !!!additional_args)
201208
add_data(.data, d)
202209
}
203210

204211
#' @rdname plotly_data
205212
#' @export
206213
rename_.plotly <- function(.data, ..., .dots) {
207214
d <- plotly_data(.data)
208-
d <- dplyr::rename_(d, .dots = lazyeval::all_dots(.dots, ...))
215+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
216+
d <- dplyr::rename(d, !!!additional_args)
209217
add_data(.data, d)
210218
}
211219

212220
#' @rdname plotly_data
213221
#' @export
214222
transmute_.plotly <- function(.data, ..., .dots) {
215223
d <- plotly_data(.data)
216-
d <- dplyr::transmute_(d, .dots = lazyeval::all_dots(.dots, ...))
224+
additional_args <- as_quosures_explicit(lazyeval::all_dots(.dots, ...))
225+
d <- dplyr::transmute(d, !!!additional_arg)
217226
add_data(.data, d)
218227
}
219228

R/utils.R

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ crosstalk_key <- function() ".crossTalkKey"
139139
# arrange data if the vars exist, don't throw error if they don't
140140
arrange_safe <- function(data, vars) {
141141
vars <- vars[vars %in% names(data)]
142-
if (length(vars)) dplyr::arrange_(data, .dots = vars) else data
142+
if (length(vars)) dplyr::arrange(data, !!!lapply(vars, rlang::sym)) else data
143143
}
144144

145145
is_mapbox <- function(p) {
@@ -1154,3 +1154,11 @@ longest_element <- function(x) {
11541154
else
11551155
""
11561156
}
1157+
1158+
# Apply rlang::as_quosure across a list or vector, but explicitly pass env
1159+
# and expr to as_quosure, due to a bug in as_quosures when dealing with
1160+
# lazy objects
1161+
as_quosures_explicit <- function(vec) {
1162+
lapply(vec,
1163+
FUN = function(x) rlang::as_quosure(x$expr, x$env))
1164+
}

0 commit comments

Comments
 (0)