[Rd] Calling a replacement function in a custom environment
Konrad Rudolph
konr@d@rudo|ph @end|ng |rom gm@||@com
Sun Aug 27 16:59:35 CEST 2023
Hello all,
I am wondering whether it’s at all possible to call a replacement function
in a custom environment. From my experiments this appears not to be the
case, and I am wondering whether that restriction is intentional.
To wit, the following works:
x = 1
base::is.na(x) = TRUE
However, the following fails:
x = 1
b = baseenv()
b$is.na(x) = TRUE
The error message is "invalid function in complex assignment". Grepping the
R code for this error message reveals that this behaviour seems to be
hard-coded in function `applydefine` in src/main/eval.c: the function
explicitly checks for `::` and :::` and permits those assignments, but has
no equivalent treatment for `$`.
Am I overlooking something to make this work? And if not — unless there’s a
concrete reason against it, could it be considered to add support for this
syntax, i.e. for calling a replacement function by `$`-subsetting the
defining environment, as shown above?
Cheers,
Konrad
--
Konrad Rudolph // @klmr
[[alternative HTML version deleted]]
More information about the R-devel
mailing list