Golden Sushi
Golden Sushi

Reputation: 13

Error in R documentation using roxygen2

After building an R package, when typing any of the package's functions name i get this error:

Error in gzfile(file, "rb") : cannot open the connection

Screenshot of the problem.

This error apparently happens when R tries to show the function's hints (the popup showing which arguments the function accepts). The strange thing is that the error goes away after using devtool's document() function. Additionally, the help screen won't show after typing "?function_name" (which works after using document())

The package works fine even with this error, the problem is that every time after building, or even just loading the package again after reinitializing R, this error comes back, forcing the user to use document() to get rid of it, which is annoying.

I tried to reinstall R, and even run at a different system (at first i was using a windows machine, but now, using ubuntu, the problem persists). Also tried to create several other test packages to see if the error was specific to this package, but always after using document() for the first time in the created test project, this error starts happening.

I searched a lot and and the closest i got to finding a similiar problem to mine was the following post, which seems to be the same problem, but didn't get solved:

https://community.rstudio.com/t/error-connecting-to-help-documenation/881

Below is an example to how I'm writing the documentatin using roxygen2.

//'@title title...
//'
//'@description description...
//'@param params...
//'@export
// [[Rcpp::export]]
Rcpp::DataFrame test(Rcpp::DataFrame arg1, Rcpp::DataFrame arg2) {

    //code

}

Could anyone shed a light at this problem?

Edit:

Seems like the problem won't happen with a project that isn't using Rcpp, so the error might be related to Rcpp documentation using roxygen2.

This is a link to a package at github that gives me this error, in case anyone wants to install it and test:

https://github.com/GoldenSushi/helpeR

Upvotes: 1

Views: 2459

Answers (1)

Dirk is no longer here
Dirk is no longer here

Reputation: 368599

Briefly, you are not executing the correct command in the correct order.

You repo itself is fine (but needs work).

Step 1: Get repo

edd@rob:~$ mkdir /tmp/goldensushi
edd@rob:~$ cd /tmp/goldensushi/
edd@rob:/tmp/goldensushi$ git clone [email protected]:GoldenSushi/helpeR.git
Cloning into 'helpeR'...
remote: Counting objects: 186, done.
remote: Compressing objects: 100% (134/134), done.
remote: Total 186 (delta 42), reused 180 (delta 39), pack-reused 0
Receiving objects: 100% (186/186), 66.03 KiB | 1.54 MiB/s, done.
Resolving deltas: 100% (42/42), done.
edd@rob:/tmp/goldensushi$ 

Step 2: compileAttributes and roxygenize

You must run compileAttributes() first to get the Roxygen tags from C++ to R, and then call roxygenize to create the Rd files. I use littler scripts for that; other people may like devtools. IT DOES NOT MATTER. You still must call the correct underlying R functions.

edd@rob:/tmp/goldensushi$ cd helpeR/
edd@rob:/tmp/goldensushi/helpeR(master)$ compAttr.r    # script: compileAttributes
edd@rob:/tmp/goldensushi/helpeR(master)$ roxy.r        # script: roxygenize()
Loading required package: Rcpp
Warning: @export [RcppExports.R#10]: unknown tag
Warning: @export [RcppExports.R#18]: unknown tag
Warning: @export [RcppExports.R#32]: unknown tag
Warning: @useDynLib [_roxyTags.R#2]: unknown tag
Warning: @importFrom [_roxyTags.R#3]: unknown tag
Warning: @export [file_readers.R#8]: unknown tag
Warning: @export [tablemanip.R#6]: unknown tag
Warning message:
Version of roxygen2 last used with this package is 6.0.1.9000. \
       You only have version 6.0.1 
edd@rob:/tmp/goldensushi/helpeR(master)$ 

You also appear to have some issues with your use of roxygen.

Step 3: Build package

Again, I use a helper script I wrote (and published in littler). IT DOES NOT MATTER. You need to call the right R script(s).

edd@rob:/tmp/goldensushi/helpeR(master)$ build.r       # convenience script for R CMD build .
* checking for file ‘./DESCRIPTION’ ... OK
* preparing ‘helpeR’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* excluding invalid files
Subdirectory 'R' contains invalid file names:
  ‘_roxyTags.R’
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building ‘helpeR_1.0.tar.gz’

edd@rob:/tmp/goldensushi/helpeR(master)$

Step 4: Check package

Again, I use a helper, this time around Gabor's rcmdcheck(). You could also call R CMD check ...

edd@rob:/tmp/goldensushi/helpeR(master)$ rcc.r helpeR_1.0.tar.gz   # convenience script for R CMD check
────────────────────────────────────────────────────────────────────────────────
─  using log directory ‘/tmp/file107a2d75f173/helpeR.Rcheck’
─  using R version 3.4.4 (2018-03-15)
─  using platform: x86_64-pc-linux-gnu (64-bit)
─  using session charset: UTF-8
✔  checking for file ‘helpeR/DESCRIPTION’
─  checking extension type ... Package
─  this is package ‘helpeR’ version ‘1.0’
✔  checking package namespace information
✔  checking package dependencies
W  checking if this is a source package
   Subdirectory ‘src’ contains:
     environment_calls.hpp table.hpp valid.hpp
   These are unlikely file names for src files.
✔  checking if there is a namespace
✔  checking for executable files
✔  checking for hidden files and directories
✔  checking for portable file names
✔  checking for sufficient/correct file permissions
─  checking whether package ‘helpeR’ can be installed ... [20s/17s] OK
✔  checking installed package size
✔  checking package directory
N  checking DESCRIPTION meta-information
   Malformed Title field: should not end in a period.
N  checking top-level files
   File
     LICENSE
   is not mentioned in the DESCRIPTION file.
✔  checking for left-over files
✔  checking index information
✔  checking package subdirectories
✔  checking R files for non-ASCII characters
✔  checking R files for syntax errors
✔  checking whether the package can be loaded
✔  checking whether the package can be loaded with stated dependencies
✔  checking whether the package can be unloaded cleanly
✔  checking whether the namespace can be loaded with stated dependencies
✔  checking whether the namespace can be unloaded cleanly
✔  checking loading without being on the library search path
✔  checking dependencies in R code
✔  checking S3 generic/method consistency
✔  checking replacement functions
✔  checking foreign function calls
N  checking R code for possible problems
   hread_table: no visible global function definition for ‘read.table’
   Undefined global functions or variables:
     read.table
   Consider adding
     importFrom("utils", "read.table")
   to your NAMESPACE file.
✔  checking Rd files
✔  checking Rd metadata
✔  checking Rd cross-references
✔  checking for missing documentation entries
✔  checking for code/documentation mismatches
W  checking Rd \usage sections
   Undocumented arguments in documentation object 'neural.arrange'
     ‘x’

   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.
✔  checking Rd contents
✔  checking for unstated dependencies in examples
✔  checking line endings in C/C++/Fortran sources/headers
✔  checking compiled code
✔  checking examples
✔  checking PDF version of manual

   See
     ‘/tmp/file107a2d75f173/helpeR.Rcheck/00check.log’
   for details.



── 0 errors ✔ | 2 warnings ✖ | 3 notes ✖
edd@rob:/tmp/goldensushi/helpeR(master)$ 

So in short: no issues, certainly none with Rcpp. You are simply inexperienced with some of these tools so I suggest you try to learn some more about them.

Postscriptum

You can probably use these alternate commands that do no rely on littler:

edd@rob:/tmp/goldensushi/helpeR(master)$ Rscript -e 'Rcpp::compileAttributes()'
edd@rob:/tmp/goldensushi/helpeR(master)$ Rscript -e 'roxygen2::roxygenize()'
Loading required package: Rcpp
Warning message:
Version of roxygen2 last used with this package is 6.0.1.9000.  You only have version 6.0.1 
edd@rob:/tmp/goldensushi/helpeR(master)$ R CMD build .
* checking for file ‘./DESCRIPTION’ ... OK
[...]
* building ‘helpeR_1.0.tar.gz’

edd@rob:/tmp/goldensushi/helpeR(master)$ R CMD check helpeR_1.0.tar.gz
* using log directory ‘/tmp/goldensushi/helpeR/helpeR.Rcheck’
* using R version 3.4.4 (2018-03-15)
[...]
* checking PDF version of manual ... OK
* DONE

Status: 2 WARNINGs, 3 NOTEs
See
  ‘/tmp/goldensushi/helpeR/helpeR.Rcheck/00check.log’
for details.


edd@rob:/tmp/goldensushi/helpeR(master)$ 

Upvotes: 3

Related Questions