[R-pkg-devel] Mysterious "invalid z limit"

Ben Bolker bbo|ker @end|ng |rom gm@||@com
Sun Jan 8 19:52:57 CET 2023



On 2023-01-08 1:38 p.m., Spencer Graves wrote:
> 
> 
> On 1/8/23 11:36 AM, Kevin Coombes wrote:
>> I have been using R-Forge for many years for package development. And 
>> I have been using GitLab for other projects almost as long.
>>
>> However, over the past few months, the R-Forge support seems to be 
>> decaying, and I now have several projects that won't currently build 
>> there because of various items that appear to need fixing at their 
>> end. So, I am actively exploring what it will take to move packages 
>> and projects to git.
> 
> 
>        R-Forge was wonderful for me when I started using it.  Then 
> several years ago, I started having problems like you described.  A few 
> years ago I migrated from R-Forge to GitHub.
> 
> 
>        One problem I encountered in the transition:  On R-Forge, I had 
> multiple packages in the same R-Forge project.  I had to split them 
> apart for GitHub.
> 
>>
>> I already know how to use a git client to clone a Subversion 
>> repository from R-Forge (using "git svn"). And how to change the 
>> remote origin to push it to a new git location. (And I  may also be 
>> willing to lose the revision history if it is going to make the 
>> transition easier.)
>>
>> I am now at the step of understanding the recent changes at GitLab 
>> with respect to support for "Educational" or "Open Source" status, 
>> especially in terms of how many monthly minutes of CI/CD time I can 
>> use for free. When working on a new package, I tend to make lots of 
>> small commit-pushes, and it sounds like each one of those will eat up 
>> minutes. So, any advice on how to manage that issue would be greatly 
>> appreciated.
> 
> 
>        When I first got into Subversion, I remember Doug Bates saying, 
> "Commit early and often."  The word "Commit" doesn't mean the same in 
> Git as in Subversion, so I would encourage you to "Git push early and 
> often."
> 
> 
>        There may be limits on free use of GitHub, but I'm not aware of 
> them:  If you want a private account, you need to pay for that, but the 
> charges for that are not much.

   The free tier of Github allows 2000 minutes/month of continuous 
integration testing for private repos, and unlimited (???) for public 
repos.  (2000 minutes/month is more than I've ever needed.)

   Furthermore, it's pretty easy to set up github actions so that it 
only runs tests if you ask it to (by appending e.g. "[run ci]" to your 
commit message), or in opt-out mode (i.e., skip tests if "[skip ci]" is 
in your commit message).

> 
> 
>        If anyone knows anything different from what I've just said, I 
> hope they will disabuse my of this part of my ignorance.
> 
> 
>        Spencer
> 
>>
>> Best,
>>    Kevin
>>
>> On Sun, Jan 8, 2023, 11:30 AM Spencer Graves 
>> <spencer.graves using effectivedefense.org 
>> <mailto:spencer.graves using effectivedefense.org>> wrote:
>>
>>                If you use GitHub, I highly recommend using "GitHub
>>     Action" as
>>     described by Wickham and Bryan, R Packages:
>>
>>
>>     https://r-pkgs.org/code.html#code-style
>>     <https://r-pkgs.org/code.html#code-style>
>>
>>
>>                I'm not sure the best way to get it set up, but I have
>>     all my
>>     packages on GitHub configured so each "push" that changes anything 
>> has
>>     "R CMD Check" run on 5 different platforms:  The release version of
>>     R on
>>     the latest Windows, macOS, and Ubuntu plus the development version 
>> and
>>     the most recent old release on Ubuntu.  I rarely run R CMD check 
>> on my
>>     local machine anymore:  I just "git commit" and "git push".  Then
>>     GitHub
>>     Action manages testing on those 5 platforms.
>>
>>
>>                To be precise, I do "git status" before "git push" to
>>     make sure I
>>     have "committed" everything I want to commit before I "git push". 
>>     And I
>>     do "git pull" to make sure a collaborator hasn't "pushed" 
>> something new
>>     I should look at before I "git push".
>>
>>
>>                Finally, I want to thank again Gábor Csárdi who helped me
>>     greatly get
>>     past problems I hand with "GitHub Action" for my "sos" package.  He
>>     provided example workflows in:
>>
>>
>>     
>> https://github.com/r-lib/actions/blob/v2-branch/examples/check-standard.yaml <https://github.com/r-lib/actions/blob/v2-branch/examples/check-standard.yaml>
>>
>>
>>                I also needed LaTeX support, for which Gábor suggested
>>     the following:
>>
>>
>>     https://github.com/r-lib/actions/tree/v2/setup-tinytex#ctan-packages
>>     
>> <https://github.com/r-lib/actions/tree/v2/setup-tinytex#ctan-packages>
>>
>>
>>                Spencer Graves
>>
>>
>>     On 1/8/23 9:11 AM, Kevin R. Coombes wrote:
>>      > A very helpful answer. For some reason (probably because I have an
>>      > ancient perl script that automates the steps i take when building
>>     and
>>      > checking packages), I keep forgetting that the "tools" package
>>     let's me
>>      > do these things from within R.
>>      >
>>      > I had already isolated the offending line ("plot(obj)") inside
>>     the chunk
>>      > where the error occurred, and removed any additional arguments. I
>>      > wrapped that line in a "try" command followed by a conditional
>>      > "traceback()" to find the problem.  This allowed the package
>>     build to
>>      > knit the vignette and provide some feedback about what was going
>>     on. It
>>      > turned out that I had copied and pasted an assignment line of the
>>     form
>>      >
>>      > main <- [compute the title]
>>      >
>>      > from earlier in the code and pasted it directly as an argument to
>>     the
>>      > call to image.default. And R did exactly what I told it to (not
>>      > surprisingly), and interpreted the value of that assignment as the
>>      > unnamed "zlim" option that would have been the corresponding
>>     positional
>>      > argument that should have been there.
>>      >
>>      > And yes, I still use "left arrow" <- instead of equals = as
>>     assignments.
>>      > (Heck, I even use emacs and ESS with a leftover keybinding that
>>     uses the
>>      > underscore key to insert the left arrow. Apparently, I'm ancient
>>     myself.)
>>      >
>>      >    Kevin
>>      >
>>      > On 1/8/2023 5:04 AM, Duncan Murdoch wrote:
>>      >> On 07/01/2023 8:43 p.m., Kevin R. Coombes wrote:
>>      >>> Hi,
>>      >>>
>>      >>> I am in the middle of developing a new package, which contains a
>>      >>> markdown-knitr-html vignette. When I try to run
>>      >>>
>>      >>> R CMD build [mypackagedirectory]
>>      >>>
>>      >>> I get an error message
>>      >>>
>>      >>> Quitting from lines 330-336
>>      >>> Error: processing vignette  failed with diagnostics:
>>      >>> invalid z limits
>>      >>>
>>      >>> If I run the same markdown script interactively inside R
>>     Studio, there
>>      >>> is no error.
>>      >>> If I knit the markdown script inside R Studio, it produces the
>>     correct
>>      >>> HTML output, with no error.
>>      >>>
>>      >>> The offending lines of code (the chunk at 330-336) invoke an
>>     "image"
>>      >>> method on an object of a class defined in the package, which in
>>     turn
>>      >>> computes a matrix from items inside the object and calls
>>     image.default,
>>      >>> which is presumably where the error is coming from.
>>      >>>
>>      >>> Two questions: (1) How is it possible that the same code works
>>     error
>>      >>> free in the RStudio contexts, but fails in the attempt to build
>>     the
>>      >>> package?
>>      >>> (2) Any suggestions on how to debug something that only throws
>>     an error
>>      >>> from "R CMD build" would be most welcome.
>>      >>
>>      >> Debugging that sort of thing is hard.  Here's what I would try:
>>      >>
>>      >> From inside an R session, run
>>      >>
>>      >>   tools:::.build_packages("[mypackagedirectory]")
>>      >>
>>      >> That runs the code that R CMD build runs, so it might trigger
>>     the same
>>      >> error.  If so, debug in the usual way, with traceback(), etc.
>>      >>
>>      >> If that doesn't trigger the error, try it using a different
>>     front-end,
>>      >> e.g. running R at the command line instead of running it in 
>> RStudio.
>>      >>
>>      >> If you still can't trigger it, then start modifying the 
>> vignette to
>>      >> find the exact line that causes the error (e.g. by commenting
>>     out the
>>      >> second half of the code in that chunk; did the error go away?
>>     etc.).
>>      >> Then modify it again to save all the inputs to the bad line in a
>>     file
>>      >> before running it, and see if running that line in a different
>>     context
>>      >> still triggers the error. Etc.
>>      >>
>>      >> Duncan Murdoch
>>      >
>>      > ______________________________________________
>>      > R-package-devel using r-project.org
>>     <mailto:R-package-devel using r-project.org> mailing list
>>      > https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>     <https://stat.ethz.ch/mailman/listinfo/r-package-devel>
>>
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
Dr. Benjamin Bolker
Professor, Mathematics & Statistics and Biology, McMaster University
Director, School of Computational Science and Engineering
(Acting) Graduate chair, Mathematics & Statistics
 > E-mail is sent at my convenience; I don't expect replies outside of 
working hours.



More information about the R-package-devel mailing list