[R] Default Generic function for: args(name, default = TRUE)

Leonard Mada |eo@m@d@ @end|ng |rom @yon|c@eu
Wed Mar 8 20:45:59 CET 2023


Dear Bert,

Thank you for the idea.

It works, although a little bit ugly. The original code generated an 
ugly warning as well. I have modified it slightly:

is.function.generic = function(name) {
     # TODO: is.function.generic();
     # - this version is a little bit ugly;
     # - S4: if(isGeneric(name));
     length(do.call(.S3methods, list(name))) > 0;
}

The latest code is on GitHub:
https://github.com/discoleo/R/blob/master/Stat/Tools.Code.R

Sincerely,

Leonard

### initial variant:

is.function.generic = function(name) {
     length(.S3methods(name)) > 0;
}
is.function.generic(plot)
# [1] TRUE
# Warning message:
# In .S3methods(name) :
#  generic function 'name' dispatches methods for generic 'plot'


On 3/8/2023 9:24 PM, Bert Gunter wrote:
> ?.S3methods
>
> f <- function()(2)
> > length(.S3methods(f))
> [1] 0
> > length(.S3methods(print))
> [1] 206
>
> There may be better ways, but this is what came to my mind.
> -- Bert
>
> On Wed, Mar 8, 2023 at 11:09 AM Leonard Mada via R-help 
> <r-help using r-project.org> wrote:
>
>     Dear R-Users,
>
>     I want to change the args() function to return by default the
>     arguments
>     of the default generic function:
>     args = function(name, default = TRUE) {
>          # TODO: && is.function.generic();
>          if(default) {
>              fn = match.call()[[2]];
>              fn = paste0(as.character(fn), ".default");
>              name = fn;
>          }
>          .Internal(args(name));
>     }
>
>     Is there a nice way to find out if a function is generic:
>     something like
>     is.function.generic()?
>
>     Many thanks,
>
>     Leonard
>     =======
>
>     Note:
>     - the latest version of this code will be on GitHub: [edited]
>     https://github.com/discoleo/R/blob/master/Stat/Tools.Code.R
>
>     ______________________________________________
>     R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>     https://eu01.z.antigena.com/l/WZHjscrVT77vHCg4mpOMD6G3~71hGfsI0mptEj63qDZ99ANSHBBoL682m4B1eeO4WJY2kWbEgf4nD6ORsu0Q1G3~fQBVXndWyFwTK0o1QPwCDSM4XcAT_kGxZsqFs0nU5LG9FCvwtZX7Lsta070KiGRfGTdgKbpCnJ9vNNn
>
>     PLEASE do read the posting guide
>     https://eu01.z.antigena.com/l/Efe9Tc5mAjjlHqsLNsVk2LXfGus-29wP9xeO3U-ofLI66Tb7tlGzxrP41MCDN4tLHzRIy8CNw2lGBcBL8IJrlNylyzjgGj38QiP1AqozMauoon-m6yOtCa2oLqMafoHs6kmA~KUXemho3gXsgpaNdEzAmkcv5WqXCZJU9h
>
>     and provide commented, minimal, self-contained, reproducible code.
>
	[[alternative HTML version deleted]]



More information about the R-help mailing list