Skip to content

Commit 8d9d955

Browse files
committed
put comments back in
1 parent c0ba01c commit 8d9d955

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

R/facet-.R

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,22 +108,29 @@ Facet <- ggproto("Facet", NULL,
108108
return(data)
109109
}
110110

111+
# Compute faceting values
111112
facet_vals <- eval_facets(vars, data, params$.possible_columns)
112113

113114
include_margins <- !isFALSE(params$margin %||% FALSE) &&
114115
nrow(facet_vals) == nrow(data) &&
115116
all(c("rows", "cols") %in% names(params))
116117
if (include_margins) {
118+
# Margins are computed on evaluated faceting values (#1864).
117119
facet_vals <- reshape_add_margins(
118120
vec_cbind(facet_vals, .index = seq_len(nrow(facet_vals))),
119121
list(intersect(names(params$rows), names(facet_vals)),
120122
intersect(names(params$cols), names(facet_vals))),
121123
params$margins %||% FALSE
122124
)
125+
# Apply recycling on original data to fit margins
126+
# We're using base subsetting here because `data` might have a superclass
127+
# that isn't handled well by vctrs::vec_slice
123128
data <- data[facet_vals$.index, , drop = FALSE]
124129
facet_vals$.index <- NULL
125130
}
126131

132+
# If any faceting variables are missing, add them in by
133+
# duplicating the data
127134
missing_facets <- setdiff(names(vars), names(facet_vals))
128135
if (length(missing_facets) > 0) {
129136

@@ -140,6 +147,7 @@ Facet <- ggproto("Facet", NULL,
140147
}
141148

142149
if (nrow(facet_vals) < 1) {
150+
# Add PANEL variable
143151
data$PANEL <- NO_PANEL
144152
return(data)
145153
}
@@ -148,6 +156,7 @@ Facet <- ggproto("Facet", NULL,
148156
facet_vals[] <- lapply(facet_vals, addNA, ifany = TRUE)
149157
layout[] <- lapply(layout, as_unordered_factor)
150158

159+
# Add PANEL variable
151160
keys <- join_keys(facet_vals, layout, by = names(vars))
152161
data$PANEL <- layout$PANEL[match(keys$x, keys$y)]
153162
data

0 commit comments

Comments
 (0)