[Rd] Compatibility issues caused by new simplify argument in apply function

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Sat May 23 14:25:17 CEST 2020


>>>>> Lukas Lehnert via R-devel 
>>>>>     on Fri, 22 May 2020 12:26:05 +0200 writes:

    > Dear R Developers,
    > the new  simplify argument in apply causes that my package (hsdar) does not 
    > pass the 
    > checks in R-devel.

    > The workaround, Kurt Hornik send me, is working for the R-code:
    > if("simplify" %in% names(formals(base::apply))) 
    > do something 
    > else 
    > do something else

    > Unfortunately, I cannot conditionalize the man pages of the functions. 

Why should you do that?   In other words:  Why change the
argument list of your function(s) ?

That \Sexpr{} does not work as a section is "obvious" (for some),
but I really don't see why you should change the argument list
or defaults of your hdara package functions at all.

Martin Maechler
ETH Zurich  and  R Core

    > I get the message 
    > that "applySpeclib.Rd:12-14: Section \Sexpr is unrecognized and will be 
    > dropped" if I try to 
    > dynamically define the entire usage section. If I try to use \Sexpr inside the 
    > \usage section, 
    > I get the following warning: "applySpeclib.Rd:13-15: Tag \Sexpr is invalid in 
    > a \usage block"

    > Does anybody have an idea how to proceed. The full code is available below.

    > Thanks

    > Lukas


    > *1. Code for full usage section:*
    > ..
    > \description{
    > Apply function over all spectra or a subset of spectra in a \code{Speclib}.
    > }

    > \Sexpr[echo=TRUE,results=rd,stage=install]{
    > hsdar:::.applyInHelp1("Speclib", usage = TRUE)
    > }

    > \arguments{
    > ..

    > *Function .applyInHelp1*
    > .applyInHelp1 <- function(fun_name, usage)
    > {
    > if (usage)
    > {
    > if ("simplify" %in% names(formals(base::apply))) 
    > {
    > return(paste0("\\usage{\n",
    > "\\S4method{apply}{", fun_name, "}(X, MARGIN, FUN, ..., 
    > simplify = TRUE)\n",
    > "}"))
    > } else {
    > return(paste0("\\usage{\n",
    > "\\S4method{apply}{", fun_name, "}(X, MARGIN, FUN, ...)
    > \n",
    > "}"))
    > }
    > } else {
    > if ("simplify" %in% names(formals(base::apply))) 
    > {
    > return("}\n\\item{simplify}{Currently ignored")
    > } else {
    > return("")
    > }
    > }
    > }


    > *2. Using \Sexpr inside the \usage block*
    > \usage{
    > \S4method{apply}{Speclib}(X, FUN, bySI = NULL, ...
    > \Sexpr[echo=TRUE,results=rd,stage=install]{
    > hsdar:::.applyInHelp2(usage = TRUE)
    > }
    > )
    > }


    > *Function .applyInHelp2*
    > .applyInHelp2 <- function(usage)
    > {
    > if (usage)
    > {
    > if ("simplify" %in% names(formals(base::apply))) 
    > {
    > return(", simplify = TRUE)")
    > } 
    > } else {
    > if ("simplify" %in% names(formals(base::apply))) 
    > {
    > return("}\n\\item{simplify}{Currently ignored")
    > } else {
    > return("")
    > }
    > }
    > }

    > ______________________________________________
    > R-devel using r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list