do not show function help document in building R package by roxygen2
Asked Answered
A

3

17

I am using devtools to build R package, and there are some functions that are NOT designed to be visible to end-users. However, since these functions involve calling C codes by .Call, so that I have to write @useDynLib above the function for automatic generation of .Rd files. In that way, when I build the package, even I did NOT include the @export for those functions, they nonetheless appear in the help document... Is there a way to suppress those functions even if they have been documented? Thanks!

Altarpiece answered 9/4, 2013 at 3:26 Comment(6)
You only need one useDynLib declaration per package.Emotive
@hadley: thanks, I've corrected that...but still functions without @ export are in the help document, which I wish are invisible to end-users. Any method to "suppress" producing .Rd files?Altarpiece
Don't use roxygen comments?Emotive
@hadley: I think in order to automatically update the NAMESPACE to include @ useDynLib I prefer to use roxygen2... Just curious how can I make the functions invisible to end-users (even if they have associated .Rd) Thanks ;-)Altarpiece
Oh then you want @keywords internalEmotive
@hadley: thank you so much! that works perfectly -- I should read through your wiki pages on devtools as you wrote explicitly there ;-)Altarpiece
A
30

According to Hadley's comments, use @keywords internal will make the function invisible to end-users. Details can be found here in the wiki pages of devtools.

Altarpiece answered 10/4, 2013 at 15:45 Comment(0)
A
12

The wiki linked in the accepted answer no longer discusses @keywords internal (as of April 2016). In case it's helpful for someone to see an example:

# multiplyBy3
#' This is an example of an internal function called \code{multiplyBy3()}
#'
#' Sometimes you want internal functions as part of an R Package built with 
#' RStudio and roxygen2, but you don't want .Rd files created for them
#' or to have them be visible in the help document following the build process
#' 
#' @keywords internal
#'
#' @param base_num The number to multiply by three 
#'
#' @import jsonlite
#'
#' @return Returns a numeric vector
#'
multiplyBy3 <- function(base_number) {
  stopifnot(is.numeric(base_number))
  return(base_number * 3)
}

Key bits: do not include @export and do include @keywords internal

Arsenical answered 18/4, 2016 at 19:0 Comment(1)
This is what I was searching for the past half an hour. Thanks @ArsenicalBoswell
G
10

For me, @keywords internal did not work (roxygen2 6.1.1). I was able to achieve the desired result using the following in my roxygen comments:

@noRd
Grimona answered 5/3, 2019 at 17:24 Comment(1)
see community.rstudio.com/t/keywords-internal-vs-nord/35119 for a discussion of the differences between these: "@keywords internal is useful because it removes the function from the documentation index." whereas "@NoRd means there won't even be a manual page so the roxygen2 doc of that function only lives in the R script"Hyperbaric

© 2022 - 2024 — McMap. All rights reserved.