Sure, but it's more than is necessary:
i <- function(a = 1, b) {
a + b
}
i(b = 2)
#> [1] 3
i(a = 3, b = 2)
#> [1] 5
Created on 2018-12-13 by the reprex package (v0.2.1)
The purpose of missing() is to let the function tell the difference between: i(b = 2) (the a value is being supplied by the default) and i(a = 3, b = 2) (the a value was supplied by the user, overriding the default), so that the function can do something differently in the two cases. This is pretty specialized — most functions have no need for missing(). It is not necessary if all you want to do is have some default values.
i <- function(a = 1, b) {
if(missing(a)) message("OK, I'll use the default a = 1")
a + b
}
i(b = 2)
#> OK, I'll use the default a = 1
#> [1] 3
i(a = 3, b = 2)
#> [1] 5
# Edited to add: Note what happens when we supply
# the same value as the default. This is why `missing()` is
# more powerful than just checking for a particular value
i(a = 1, b = 2)
#> [1] 3
Created on 2018-12-13 by the reprex package (v0.2.1)