【问题标题】:Automatically run a function when loading a R package加载 R 包时自动运行函数
【发布时间】:2016-06-14 20:15:49
【问题描述】:

我必须创建一个非常简单的 R 包,其中包含使用 RStudio 的函数。 我想送给一些学生。

当我的包被加载时,我希望它自动启动我的功能,而不需要用户输入它的名字。 (该函数等待用户输入或可以打开一个简单的 GUI)

我怎样才能得到它?

PD:我不能修改其他人的.Rprofile,这就是为什么我需要一个方法来在加载包时自动加载函数。

【问题讨论】:

  • 看看?Startup。我想你会想要创建一个 Rprofile 来加载包,你可能会发现定义函数 .First 来运行你的函数是实现第二个目标的最佳方式。具体如何执行此操作取决于系统,但您应该在该帮助页面上找到您需要的所有信息。
  • 自动启动我的功能是什么意思?
  • 想象我的包名为 Regression,在里面我创建了一个函数,它打开一个 wxwidget 界面(称为 GUI)与用户交互,输入变量值。自动启动我的功能意味着当我的包启动时,用户不需要键入和执行 GUI,因为包会自动执行,当你加载包时,一切都会自动运行
  • 使用.onAttach。例如here.
  • 一个可能的用例是更新或加载全局变量。

标签: r


【解决方案1】:

如果你想在 R 启动时运行一些东西:

启动 RStudio,然后运行以下命令在您的主目录中创建 .Rprofile 文件:

file.edit("~/.Rprofile")

将以下函数放入该文件中:

.First <- function(){
  cat("Hello!") # startup message

  require(data.table)   
  # or whatever packages you want to load 

  # or if you want to run a function in a file
if(file.exists("~/myfile.r")){
        source("~/myfile.r")
        myfunc()
    }

}

保存。完成!

关于 OP 的编辑

如果你想在你的包被加载时运行一些东西,你可以使用.onLoad.onAttach 函数。例如:

.onAttach <- function(libname, pkgname) {
  # to show a startup message
  packageStartupMessage("This is my package, enjoy it!")
}

.onLoad <- function(libname, pkgname) {
      # something to run
}

【讨论】:

  • 嗯,放在哪个文件里?
  • "按照惯例,.onLoad() 和朋友通常保存在一个名为 zzz.R 的文件中。" r-pkgs.had.co.nz/r.html 在实践中,它们可以进入您包的R/ 目录中的任何*.R 文件。但遵循惯例是个好主意。
猜你喜欢
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2019-12-28
相关资源
最近更新 更多