如何为 R 包创建自定义启动消息?

How to create custom start-up messages for R packages?

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

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

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

编辑:明确地说,我不问如何创建 ASCII 艺术,而是问一般情况下如何显示启动消息。

你的问题不是很清楚。你问的是如何创建显示 MCLUST 的 ASCII 艺术,或者如何显示启动消息?我会假设后者。

你添加一个功能,比如

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

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

除了 .onLoad() 中的错误或警告之外,不要打印其他内容;那通常应该是沉默的。

为了补充其他出色的答案,我们可以在路径 mclust project 中找到这个确切的示例:

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()
}