在包安装期间执行 R 脚本

2024-02-02

希望这有一个简单的答案,但我还没有找到它。

我正在编写一个 R 包,当安装在 Windows 上时,我希望它执行一个搜索系统文件的脚本,即list.files(path = "C:/Program Files/, ...)然后将该路径保存到包目录作为文本文件以供以后参考。

我尝试将脚本另存为src/install.libs.R但这阻止了我的包裹的建造。

如果有替代解决方案,我尝试保存驻留在程序文件目录(某处!)中的 javaw.exe 文件的路径,以便我可以quickly通过在函数中调用它system2().


R 中没有用于此目的的钩子:在安装期间执行代码。

然而,有一整套用于包裹装载或附着的挂钩。我经常使用.onLoad()为了这。看e.g. how RcppGSL http://dirk.eddelbuettel.com/code/rcpp.gsl.html记住要使用的链接器和编译器标志 - 来自R/inline.R:

.pkgglobalenv <- new.env(parent=emptyenv())

.onLoad <- function(libname, pkgname) {

    if (.Platform$OS.type=="windows") {
        LIB_GSL <- Sys.getenv("LIB_GSL")
        gsl_cflags <- sprintf( "-I%s/include", LIB_GSL )
        gsl_libs   <- sprintf( "-L%s/lib -lgsl -lgslcblas", LIB_GSL )
    } else {
        gsl_cflags <- system( "gsl-config --cflags" , intern = TRUE )
        gsl_libs   <- system( "gsl-config --libs"   , intern = TRUE )
    }

    assign("gsl_cflags", gsl_cflags, envir=.pkgglobalenv)
    assign("gsl_libs", gsl_libs, envir=.pkgglobalenv)
}

该文件的接下来是如何使用它们:

LdFlags <- function(print = TRUE) {
    if (print) cat(.pkgglobalenv$gsl_libs) else .pkgglobalenv$gsl_libs
}

CFlags <- function(print = TRUE) {
    if (print) cat(.pkgglobalenv$gsl_cflags) else .pkgglobalenv$gsl_cflags
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在包安装期间执行 R 脚本 的相关文章

随机推荐

  • WPF ListView/GridView 绑定

    我正在尝试制作一个简单的 VS 2017 扩展 它获取一个对象并显示它 我有数据返回并在文本框中显示 json 所以我知道数据正确返回 但由于某种原因 gv 仅显示单词 id 两次 因为它们是数据集中的两条记录 我已经尝试了很多事情 但我却
  • 动态加载字体 html jquery

    我正在开发一个允许用户输入一些文本并将其拖动到适当位置等的网站 我已经达到了我想提供字体选择的程度 我可以动态加载字体而不是一次性加载所有字体吗 例如 用户输入文本并选择使用 通用字体 1 是否可以使用 jquery 加载该字体 这样我就可
  • 如何使用 puppeteer 使用 x/y 坐标单击元素?

    我一直在尝试弄清楚如何使用 puppeteer 中的 x 和 y 坐标单击页面上的按钮 但我无法让它工作 这就是我目前正在使用的 await page mouse click x y button left 没有发生错误 它只是没有单击任何
  • 数据表中的自定义分页

    我有一个网络应用程序 在其中我从数据库获取数据并显示在数据表中 我在执行此操作时遇到问题 因为我获取的数据行太多 200 000 所以当我查询类似的东西时select from table name 我的应用程序卡住了 有没有办法用 Jav
  • Django UserCreationForm 自定义字段

    我正在尝试创建用户注册表单并添加一些自定义字段 为此 我对 UserCretionForm 进行了子类化并添加了字段 如 django 文档中所示 然后我根据这个表单创建了基于函数的视图和模板 现在 我可以成功创建用户 并且该用户已按预期添
  • jQuery - 使用 .getHours() 方法将 1-24 小时更改为 1-12 小时?

    Fiddle http jsfiddle net bnsex 1 http jsfiddle net bnsex 1 我想在这段代码中使用 12 小时制 document ready function setInterval functio
  • Java byte[] 到字符串转换输出字节

    在我的代码中 我通过互联网发送一个编码为字节数组的 txt 文件 然后在另一端将消息转换回并显示它 问题是 当我尝试显示它时 它总是显示为 B 1ef9f1d 或 B 1764be1 等 这是接收数据的地方 private void par
  • C语言UART通信(十六进制)

    我想向写入函数发送一个十六进制值 例如 0 90 这是因为需要通信的设备接收到的是十六进制数的命令 未使用的变量在测试时出现 并注释为丢失十六进制值 稍后将被删除 如何编写具有字符串以外的十六进制值的写入函数 对于初学者 请告诉我们如何通过
  • Ransack:如何使用不同的别名多次连接表?

    假设我有 items 与 has many 与 properties 关联 那么我可以像这样搜索具有名称为 a name 和值 a value 的属性的所有项目 q properties name eq a name properties
  • C - 指针初始化,星号位置[重复]

    这个问题在这里已经有答案了 放置星号的最正确方法是什么 为什么 1 type var 2 type var 只要您只声明一个指针 这并不重要 它通常像第二个示例一样编写 在我通常读 写的代码中 但对于编译器来说是相同的 如果您声明多个指针
  • 目标 C:如何解决代码中的泄漏(来自仪器的结果)

    我为我的应用程序运行了仪器 其中包含 UITableView 并得到了以下结果 每次单元格变得可见时 单元格将调用方法 UICustomButton SetButtonWithAnswer 编辑 添加了更多屏幕截图 问题是我不确定到底是什么
  • 将计算列添加到 pandas 数据框中

    我对 Python pandas 和一般编程完全陌生 我无法弄清楚以下内容 我在 pandas 的帮助下访问了数据库 并将查询中的数据放入数据框 df 中 其中一列包含生日 可以采用以下形式 1980 年 1 月 25 日 字符串 01 2
  • CYPHER 查询中的 LIKE 子句

    Cypher 查询似乎不支持 LIKE 是否有任何其他构造可以执行相同的任务 例如 start n node where n Name LIKE SUBSTRING return n Name n 使用正则表达式 http neo4j co
  • “%H:%M”格式的时间增量

    有一种方法可以转换timedelta列转换为 H M 格式的字符串 我什至需要这个timedeltas超过24小时 我想这样做是为了制作一个可在类似电子表格的软件 excel google Sheets 中使用的 csv 文件 没有任何内置
  • Nodejs for 循环并等待循环完成

    我有以下代码 Marks all users which are reading the book with the bookId var markAsReading function bookId cb User find functio
  • 詹金斯转义 sed 命令

    有人可以为我在 Jenkins groovy 脚本中转义这个 sed shell 命令吗 So hard sh sed s AssemblyInformationalVersion 1 productVersion 3 g Assembly
  • 如何确定Android .so文件的ABI(即armeabi或armeabi-v7a)?

    我有一个由第三方供应商提供的 so 文件 该文件将包含在我的 Android 应用程序中 我无法访问源代码 也无法 轻松 联系供应商 有没有办法让我通过检查 so 文件来确定它是否是针对armeabi or armeabi v7a ABI
  • 如何使用其他表中的列/字段对 PostgreSQL 表进行集群

    我想根据其他表中的信息对 PostgreSQL 表进行聚类 想象一下两张桌子 foos id baz id name and bars foo id name bars foo id是一个外键引用foos id 我想对 bar 表进行聚类
  • 我可以访问来自不同语言环境的 android 资源吗?

    我的应用程序中有两个区域设置 我可以访问资源 例如来自不同语言环境的字符串数组而不更改当前语言环境吗 我的意思是 对于编码 我不喜欢在 设置 中更改它 更好的解决方案是 如果您使用的是 API 17 NonNull protected St
  • 在包安装期间执行 R 脚本

    希望这有一个简单的答案 但我还没有找到它 我正在编写一个 R 包 当安装在 Windows 上时 我希望它执行一个搜索系统文件的脚本 即list files path C Program Files 然后将该路径保存到包目录作为文本文件以供