Could Not Find Function: A Deep Dive into Roxygen Examples during CMD Check

Could Not Find Function: A Deep Dive into Roxygen Examples during CMD Check

The CMD check is a crucial step in ensuring the quality and consistency of your R packages. It checks various aspects, including the documentation, examples, and code, to ensure that your package meets the standards set by the R community. One common issue that can arise during this process is an error indicating that a function cannot be found in the @examples section of your inline Roxygen documentation.

In this article, we will delve into the world of Roxygen and explore what might cause this “could not find function” error during CMD check. We’ll examine how to identify and resolve this issue, providing a comprehensive understanding of Roxygen, its role in R packages, and the CMD check process.

Understanding Roxygen

Roxygen is a package for documenting R functions in a human-readable format. It allows developers to create high-quality documentation that can be easily understood by users, including non-technical readers. The roxygen2 package builds upon the original roxygen and provides several improvements, such as better support for multiple languages and improved automatic formatting.

Roxygen uses a specific syntax to define functions, which includes the use of comments marked with #@, where #@ denotes a special type of comment. These comments are used to provide metadata about the function, such as its name, description, and parameter documentation.

The Role of CMD Check

The CMD check is an automated process that runs as part of the package build process in RStudio. Its primary goal is to ensure that your package meets certain standards for quality, consistency, and usability. During this process, the CMD check checks various aspects of your package, including:

  1. Documentation: The CMD check examines the documentation generated by Roxygen to ensure it is complete, accurate, and follows the recommended formatting guidelines.
  2. Examples: As mentioned in the original question, the CMD check also runs examples from the @examples section of your inline Roxygen documentation.
  3. Code Quality: The CMD check evaluates the quality of your code, looking for issues such as unused variables, incorrect data types, and other common problems.

Identifying the Problem

In the original question, the user encounters an error indicating that a function named checkDate cannot be found in the @examples section of their inline Roxygen documentation. To diagnose this issue, we need to examine the code more closely.

The checkDate function is not defined anywhere in the provided code snippet. However, its existence is hinted at by the presence of a comment that mentions it:

#' Ensure that a date string is a valid date
#'
#' @param dateString A string (eg. "2017-12-04").
#' @return TRUE or FALSE (and a warning if FALSE).
#'
#' @examples
#' checkDate("2017-05-06")
#' checkDate("2017-05-40")

The issue is that the checkDate function has not been exported to the namespace of the package. In Roxygen, functions are exported using the @export directive in their documentation comments.

Resolving the Issue

To fix this issue, you need to export the checkDate function by adding an @export directive around its definition:

#' Ensure that a date string is a valid date
#'
#' @param dateString A string (eg. "2017-12-04").
#' @return TRUE or FALSE (and a warning if FALSE).
#'
#' @export
#' checkDate <- function(dateString) {
#'
#'   # implement the logic here
#'}

By adding the @export directive, you make the checkDate function available to users of your package. This ensures that the CMD check can successfully run and identify this function as part of its examples.

Additional Considerations

In addition to exporting functions, there are several other factors that might contribute to the “could not find function” error during CMD check:

  • Package Version: Make sure you are using a compatible version of devtools and roxygen2. In some cases, newer versions may introduce breaking changes.
  • Roxygen Documentation Format: Ensure that your Roxygen documentation is formatted correctly. The CMD check has specific requirements for the structure and content of your documentation.
  • Code Quality and Best Practices: Maintain high-quality code that follows R best practices. This includes using proper data types, handling errors, and adhering to coding standards.

By following these guidelines and taking the necessary steps to resolve any issues that arise during CMD check, you can ensure the quality and consistency of your R packages.

Conclusion

The “could not find function” error during CMD check is a common issue that can be resolved by exporting functions in Roxygen documentation. By understanding how to identify and fix this problem, developers can create high-quality R packages that meet the standards set by the R community. Remember to stay up-to-date with the latest versions of devtools and roxygen2, follow best practices for code quality and documentation, and consult the Roxygen documentation for more information on creating effective documentation for your R package.

Additional Resources

Example Use Case

Here is an example of how to create a simple R package using Roxygen:

# Create a new directory for your package
mkdir mypackage

# Navigate into the directory
cd mypackage

# Initialize the package with devtools
devtools::create("mypackage")

# Write your code in the mypackage.R file
mypackage.R

Create a new file called mypackage.R and add some sample code:

#' Simple Function
#'
#' @export
#' simpleFunction <- function(x) {
#'   # implement the logic here
#' }
simpleFunction <- function(x) {
  return(x + 1)
}

Add a Roxygen documentation comment to your mypackage.R file:

#' Simple Function
#'
#' @export
#' simpleFunction <- function(x) {
#'   # implement the logic here
#' }
simpleFunction <- function(x) {
  return(x + 1)
}

#' Ensure that a date string is a valid date
#'
#' @param dateString A string (eg. "2017-12-04").
#' @return TRUE or FALSE (and a warning if FALSE).
#' @export
#' checkDate <- function(dateString) {
#'   # implement the logic here
#' }
checkDate <- function(dateString) {
  # Check if the date is valid
}

Finally, run the CMD check to ensure your package meets the standards:

devtools::check()

This will execute a series of checks on your package, including the Roxygen documentation and examples. By following these steps, you can create high-quality R packages that meet the needs of users.

Conclusion

In this article, we explored the “could not find function” error during CMD check in the context of Roxygen examples. We discussed how to identify and fix this issue by exporting functions and adhering to best practices for code quality and documentation. By following these guidelines, developers can create high-quality R packages that meet the standards set by the R community.


Last modified on 2024-07-31