Skip to content

[R-pkg-devel] New 'extptr.as.ref' argument in identical() causing check failures

5 messages · Andrew Plowright, Simon Urbanek

#
Hello, I have an 'identical()' method in my library

https://github.com/andrew-plowright/TileManager/blob/0f213a6bcce4bc4b6d0f5e6672660409e09c22c5/R/tileScheme-methods.R#L198

I recently started getting a warning message regarding a new
'extptr.as.ref' argument that was added to R-devel in December. When
running devtools::check_rhub() I get:

```
* checking for code/documentation mismatches ... WARNING
identical
                 TRUE, ignore.bytecode = TRUE, ignore.environment =
                 FALSE, ignore.srcref = TRUE, extptr.as.ref = FALSE)
  Code: function(x, y, num.eq = TRUE, single.NA = TRUE, attrib.as.set =
Codoc mismatches from documentation object 'identical':
  Docs: function(x, y, num.eq = TRUE, single.NA = TRUE, attrib.as.set =
                 TRUE, ignore.bytecode = TRUE, ignore.environment =
                 FALSE, ignore.srcref = TRUE)
  Argument names in code not in docs:
    extptr.as.ref
```

I tried adding the 'extptr.as.ref' argument to my documentation, but now I
get a new warning:

```
  Documented arguments not in \usage in documentation object 'identical':

    'extptr.as.ref'
  Functions with \usage entries need to have the appropriate \alias
  entries, and all their arguments documented.
  The \usage entries must correspond to syntactically valid R code.
  See chapter 'Writing R documentation files' in the 'Writing R
  Extensions' manual.
```

So it seems that a warning is being generated both with or without the
extptr.as.ref in my documentation. Any help would be appreciated, thanks!

Andrew
#
Andrew,

you should not re-define identical, it is not a semantic operation and does NOT test equality. Did you mean to write a `==` method instead?

Cheers,
Simon
#
Hi Simon,

Thanks for your reply. I guess I could use == instead. What I want is a
method for checking if two S4 class objects are the same. I thought that ==
was strictly meant for atomic and list types?

Andrew

On Tue, Feb 1, 2022 at 4:45 PM Simon Urbanek <simon.urbanek at r-project.org>
wrote:

  
  
#
identical() already checks that two objects S4 are the same - so if that's what you want, then you don't need to do anything, R provides.

I assumed you want to decide if two objects are semantically equal even if the two objects are not identical, but can still be equal - let's say because you include some additional information in the object that you want to skip when deciding equivalence. In that case == is the way to go. If your object does not have vector semantics, then you just return a scalar, e.g. let's take an example from a class you're familiar with:

WGS84 and EPSG: 4326 are the same CRS:
[1] TRUE

but the objects are not necessarily identical:
[1] FALSE

Cheers,
Simon
#
Great example, that makes perfect sense.

I'll just drop the identical method. Easy fix!

Thanks,
Andrew

On Tue, Feb 1, 2022 at 6:57 PM Simon Urbanek <simon.urbanek at r-project.org>
wrote: