Skip to content

Commit 7d0d536

Browse files
committed
Avoid special evaluation in collide
1 parent e332c13 commit 7d0d536

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

R/position-collide.r

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ collide <- function(data, width = NULL, name, strategy, check.width = TRUE) {
55
if (!is.null(width)) {
66
# Width set manually
77
if (!(all(c("xmin", "xmax") %in% names(data)))) {
8-
data <- within(data, {
9-
xmin <- x - width / 2
10-
xmax <- x + width / 2
11-
})
8+
data$xmin <- data$x - width / 2
9+
data$xmax <- data$x - width / 2
1210
}
1311
} else {
1412
if (!(all(c("xmin", "xmax") %in% names(data)))) {
@@ -17,7 +15,7 @@ collide <- function(data, width = NULL, name, strategy, check.width = TRUE) {
1715
}
1816

1917
# Width determined from data, must be floating point constant
20-
widths <- unique(with(data, xmax - xmin))
18+
widths <- unique(data$xmax - data$xmin)
2119
widths <- widths[!is.na(widths)]
2220
if (!zero_range(range(widths))) {
2321
warning(name, " requires constant width: output may be incorrect",
@@ -41,13 +39,14 @@ collide <- function(data, width = NULL, name, strategy, check.width = TRUE) {
4139
}
4240

4341
if (!is.null(data$ymax)) {
44-
ddply(data, .(xmin), strategy, width = width)
42+
ddply(data, "xmin", strategy, width = width)
4543
} else if (!is.null(data$y)) {
4644
message("ymax not defined: adjusting position using y instead")
47-
transform(
48-
ddply(transform(data, ymax = y), .(xmin), strategy, width = width),
49-
y = ymax
50-
)
45+
46+
data$ymax <- data$y
47+
data <- ddply(data, "xmin", strategy, width = width)
48+
data$y <- data$ymax
49+
data
5150
} else {
5251
stop("Neither y nor ymax defined")
5352
}

0 commit comments

Comments
 (0)