Skip to content

Commit a62a120

Browse files
committed
initialize all parameters required by Stat and Geom
1 parent 8b2a764 commit a62a120

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

R/layer.R

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,26 @@ layer <- function(geom = NULL, stat = NULL,
130130

131131
# Split up params between aesthetics, geom, and stat
132132
params <- rename_aes(params)
133-
aes_params <- params[intersect(names(params), union(geom$aesthetics(), position$aesthetics()))]
134-
geom_params <- params[intersect(names(params), geom$parameters(TRUE))]
135-
stat_params <- params[intersect(names(params), stat$parameters(TRUE))]
133+
aes_params <- params[
134+
intersect(names(params), union(geom$aesthetics(), position$aesthetics()))
135+
]
136+
137+
# make sure all required parameters have a default value `NULL`
138+
geom_parameters <- geom$parameters(TRUE)
139+
geom_params <- vector("list", length(geom_parameters))
140+
names(geom_params) <- geom_parameters
141+
geom_params[intersect(names(params), geom_parameters)] <- params[
142+
intersect(names(params), geom_parameters)
143+
]
144+
stat_parameters <- stat$parameters(TRUE)
145+
stat_params <- vector("list", length(stat_parameters))
146+
names(stat_params) <- stat_parameters
147+
stat_params[intersect(names(params), stat_parameters)] <- params[
148+
intersect(names(params), stat_parameters)
149+
]
136150

137151
ignore <- c("key_glyph", "name", "layout")
138-
all <- c(geom$parameters(TRUE), stat$parameters(TRUE), geom$aesthetics(), position$aesthetics(), ignore)
152+
all <- c(geom_parameters, stat_parameters, geom$aesthetics(), position$aesthetics(), ignore)
139153

140154
# Take care of plain patterns provided as aesthetic
141155
pattern <- vapply(aes_params, is_pattern, logical(1))

0 commit comments

Comments
 (0)