On Mon, Mar 27, 2017 at 1:17 AM, Rolf Turner <r.tur...@auckland.ac.nz> wrote: > > Is there any way to trap/detect the use of an optional argument called > "X" and thereby issue a more perspicuous error message? > > This would be helpful to those users who, like myself, are bears of very > little brain. > > Failing that (it does look impossible)
You can get the names of named arguments: > z = function(x,X){cos(x*X)} > names(formals(z)) [1] "x" "X" > might it not be a good idea to > add a warning to the help for lapply(), to the effect that if FUN has an > optional argument named "X" then passing this argument via "..." will > cause this argument to be taken as the first argument to lapply() and > thereby induce an error? Another idea might be to use purrr:map instead, which is quite happy with X in your function: > xxx <- purrr::map(y,function(x,X){cos(x*X)},X=2*pi) > xxx [[1]] [1] 0.08419541 [[2]] [1] 0.6346404 [[3]] [1] 0.9800506 [[4]] [1] 0.8686734 [[5]] [1] -0.9220073 But don't feed `.x` to your purrrring cats, or fails silently: > xxx <- purrr::map(y,function(x,.x){cos(x*.x)},.x=2*pi) > xxx [[1]] NULL But who would have a function with `.x` as an argument? > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel