[英]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.