Re: [R-pkg-devel] Using function with same name as argument as default argument

2022-08-08 Thread Andrew Simmons
Hello,


This isn't something that can be fixed in the parser. If an argument isn't
provided, its default value is evaluated inside the function, so it gives
you a loop where schema = schema(x), but then what's schema, it's
schema(x), thus the recursion error. you could do something like this:

foo <- function (x, schema = schema(x))
{
if (missing(schema)) {
rm(schema)
schema <- schema(x)
}
}

which, while kinda gross looking, means that schema = schema(x) can be
evaluated without causing a recursion error.

On Mon, Aug 8, 2022, 09:11 Jan van der Laan  wrote:

> Not sure if this belongs on r-help or r-package-devel; decided for the
> latter as the question is mainly relevant when writing code to be used
> by others.
>
> The issue I run into is that I want to write a function similar to:
>
>
> foo <- function(x, schema = schema(x)) {
>if (is.null(schema)) stop("schema missing")
># ...
> }
>
> with 'schema()' something like (strongly simplified):
>
> schema <- function(x) attr(x, "schema")
>
>
> However using both the argument schema and calling the schema() function
> in one of the default arguments is not allowed ans results in the
> following somewhat cryptic error message:
>
> Error in foo(1:3) :
>promise already under evaluation: recursive default argument
> reference or earlier problems?
>
> I am looking for a clean solution to this. I can rename the argument or
> function, but calling it something other than schema feels impractical
> as both refer to the same thing (the schema of x). The best solution I
> have come up with until now is to define a second function to be used in
> default function arguments:
>
> schema_ <- schema
>
> foo <- function(x, schema = schema_(x)) {
>if (is.null(schema)) stop("schema missing")
># ...
> }
>
> I guess another solution would be:
>
> foo <- function(x, schema) {
>if (missing(schema)) schema <- schema(x)
> }
>
> But then it is not clear for the user from the interface that the
> 'schema' argument can be omitted.
>
> I am hoping some of you have other suggestions.
>
> And, is this something that could be 'fixed' in the R-parser?
>
>
> Thanks,
> Jan
>
> __
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>

[[alternative HTML version deleted]]

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


[R-pkg-devel] escaped latex specials

2022-08-08 Thread Richard M. Heiberger
There is a new NOTE.  This line with \& used to be acceptable.
I am not seeing what the suggested replacement is.

* checking Rd files ... [4s] NOTE
checkRd: (-1) bivariateNormal.Rd:42: Escaped LaTeX specials: \&

The full example is
\note{
  Based on the \code{galaxy} example on pages 204--205 in
  \emph{S \& S-PLUS Trellis Graphics User's Manual},
  Richard A. Becker and William S. Cleveland (1996),
\url{https://www.stat.auckland.ac.nz/~ihaka/courses/120/trellis.user.pdf} %% 
works 19Aug2019
}

Rich

[[alternative HTML version deleted]]

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel