簡體   English   中英

在軟件包安裝期間執行 R 腳本

[英]Executing R scripts during package installation

希望這有一個簡單的答案,但我還沒有找到它。

我正在編寫一個 R 包,當安裝在 Windows 上時,我希望它執行一個搜索系統文件的腳本,即list.files(path = "C:/Program Files/, ...)然后保存該路徑到包目錄作為文本文件供以后參考。

我嘗試將腳本保存為src/install.libs.R但這阻止了我的包的構建。

如果有替代解決方案,我會嘗試保存位於 Program files 目錄(某處!)中的 javaw.exe 文件的路徑,以便我可以通過system2()在函數中快速調用它。

R 中沒有鈎子:在安裝期間執行代碼。

然而,有一整套用於裝載或連接包裹的掛鈎。 .onLoad()我經常使用.onLoad() 例如,如何RcppGSL會記住鏈接器和編譯標志使用-從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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM