【问题标题】:How to create custom start-up messages for R packages?如何为 R 包创建自定义启动消息?
【发布时间】:2021-08-31 07:45:51
【问题描述】:

例如,如果我加载 R 包“mclust”,我会看到

> library(mclust)
    __  ___________    __  _____________
   /  |/  / ____/ /   / / / / ___/_  __/
  / /|_/ / /   / /   / / / /\__ \ / /   
 / /  / / /___/ /___/ /_/ /___/ // /    
/_/  /_/\____/_____/\____//____//_/    version 5.4.7
Type 'citation("mclust")' for citing this R package in publications.

在自己构建 R 包时,如何创建这样的自定义启动消息?

编辑:为了清楚起见,我不问如何创建 ASCII 艺术,而是问如何显示一般的启动消息。

【问题讨论】:

    标签: r package cran


    【解决方案1】:

    您的问题并不完全清楚。您是在询问如何创建显示 MCLUST 的 ASCII 艺术作品,或者如何显示启动消息?我假设是后者。

    你添加一个类似的函数

    .onAttach <- function(libname, pkgname) {
      packageStartupMessage("This is version ", packageVersion(pkgname), 
                            " of ", pkgname)
    }
    

    在您的包代码中的某个位置。按照惯例,你应该把它放在一个名为 R/zzz.R 的文件中,但它可以放在 R 代码中的任何位置。

    不要打印来自.onLoad() 的错误或警告以外的其他内容;通常应该是静音的。

    【讨论】:

      【解决方案2】:

      要补充其他出色的答案,我们可以在mclust project at path 中找到这个确切的示例:

      mclust/R/zzz.R
      

      文件zzz.R 包含以下内容:

      # .onLoad <- function(libname, pkgname) 
      # {
      #   library.dynam("mclust", pkgname, libname)
      # }
      
      mclustStartupMessage <- function()
      {
      # Startup message obtained as 
      # > figlet -f slant MCLUST
        msg <- c(paste0(
      "    __  ___________    __  _____________
         /  |/  / ____/ /   / / / / ___/_  __/
        / /|_/ / /   / /   / / / /\\__ \\ / /   
       / /  / / /___/ /___/ /_/ /___/ // /    
      /_/  /_/\\____/_____/\\____//____//_/    version ", 
      packageVersion("mclust")),
      "\nType 'citation(\"mclust\")' for citing this R package in publications.")
        return(msg)
      }
      
      .onAttach <- function(lib, pkg)
      {
        # unlock .mclust variable allowing its modification
        unlockBinding(".mclust", asNamespace("mclust")) 
        # startup message
        msg <- mclustStartupMessage()
        if(!interactive())
          msg[1] <- paste("Package 'mclust' version", packageVersion("mclust"))
        packageStartupMessage(msg)      
        invisible()
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-04
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        相关资源
        最近更新 更多