Jor*_*kie 6 r cran install.packages
希望这有一个简单的答案,但我还没有找到它.
我正在编写一个R包,当安装在Windows上时,我希望它执行一个搜索系统文件的脚本,list.files(path = "C:/Program Files/, ...)然后将该路径作为文本文件保存到包目录中供以后参考.
我尝试保存脚本,src/install.libs.R但是阻止了我的包构建.
如果有替代解决方案,我正在尝试保存驻留在程序文件目录(某处!)中的javaw.exe文件的路径,以便我可以通过函数快速调用它system2().
R中没有钩子:在安装过程中执行代码.
但是,有一整套用于包裹装载或附件的挂钩.我经常用.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)
}
Run Code Online (Sandbox Code Playgroud)
此文件中的下一步是如何使用它们:
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
}
Run Code Online (Sandbox Code Playgroud)