On 04/06/2018 7:34 AM, David Hugh-Jones wrote:
Hi all,

Latest release of my package has an error when checked on r-patched-linux
and r-devel-linux. Relevant output is shown below (from
https://cran.r-project.org/web/checks/check_results_huxtable.html). It
suggests that there's no method for `align<-` and `bold` for huxtable
objects. In fact the package defines and exports such methods. Selected
lines from the NAMESPACE file:

S3method("align<-",huxtable)
S3method(bold,huxtable)
export("align<-")
export("align<-.huxtable")
export(bold)
export(bold.huxtable)


I'd worry a little bit about your "make_getter_setters" function: it saves the result using

  lapply(names(funs), function (x) {
assign(x, funs[[x]], envir = parent.frame(3)) # 3: 1 for function(x), 2 for lapply, 3 for the caller!
  })

That count of 3 looks like an implementation detail that could conceivably vary, for instance if the compiler decided to optimize out a call or two, or lapply's implementation changed. (I suspect this isn't the cause of the error you saw, or you would have seen it a lot more: but I'd still fix it.)

I think a safer way to find the huxtable namespace is something like

huxtableNamespace <- .getNamespace("huxtable")

though this is advised against; a documented but less obvious way to do it would be

huxtableNamespace <- environment(huxtable)

The "huxtable" on the right is the function; most other functions in your package would also be fine, as long as you haven't done anything tricky to change their environments.

With one of those definitions, you could change your lapply() to

  lapply(names(funs), function (x) {
    assign(x, funs[[x]], envir = huxtableNamespace)
  })

> Checks are passing fine on other platforms. Is this just a weirdness to do
> with the changes in R 3.5.0 on Linux? Or does it indicate a real problem?

A possibility is memory corruption at the C level. Since you don't have any C code in huxtable that couldn't be caused by what you did, but you might still be a victim of it.

Duncan Murdoch



Cheers,
David

     > ### ** Examples
     >
     >
     > ht <- huxtable(a = 1:3, b = 1:3)
     > align(ht) <- 'right'
     Error in UseMethod("align<-") :
      no applicable method for 'align<-' applied to an object of class
"c('huxtable', 'data.frame')"
     Calls: align<-
     Execution halted
Flavor: r-patched-linux-x86_64
<https://www.r-project.org/nosvn/R.check/r-patched-linux-x86_64/huxtable-00check.html>

Version: 4.0.0
Check: re-building of vignette outputs
Result: WARN
     Error in re-building vignettes:
      ...
     Quitting from lines 52-104 (design-principles.Rmd)
     Error: processing vignette ‘design-principles.Rmd’ failed with
diagnostics:
     no applicable method for ‘bold’ applied to an object of class
"c('huxtable', 'data.frame')"
     Execution halted
Flavor: r-patched-linux-x86_64
<https://www.r-project.org/nosvn/R.check/r-patched-linux-x86_64/huxtable-00check.html>
David

        [[alternative HTML version deleted]]

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


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

Reply via email to