如何指定R在特定目录查找其他目录安装包的依赖?
在SLURM HPC集群运行R脚本加载个人目录包的问题
我在搭载SLURM作业管理器的HPC集群上运行R脚本,需要使用安装在个人目录的EasyQC包(无法在服务器全局R环境安装)。尝试过以下方法但均无效,总是出现EasyQC找不到依赖(首个依赖为Cairo)的错误:
- 使用
.libPaths()函数指定路径 - 在bash脚本中导出
R_LIBS_USER变量 - 尝试用
.libPaths()和lib.loc参数加载库,但未掌握正确用法
最终我通过加载另一个R模块(r-light)解决了问题,但不清楚其中原理。
相关bash脚本如下:
# Create R script to submit cat > $HOME/output/easyQ/${input}_cleaning.R <<EOF #!/usr/bin/env Rscript HOME='$HOME' source(paste0(HOME, "/analysis/input.R")) .libPaths(R_LIBS_USER) print(.libPaths()) library(EasyQC) print("EasyQC loaded") EasyQC(paste0(HOME, "/output/easyQ/${input}_cleaning.ecf")) EOF # Submit R script echo "submit ${input}" cat > $HOME/output/easyQ/${input}_cleaning.sh <<EOF #!/bin/bash #SBATCH --time=32:00:00 #SBATCH --mem=16G #SBATCH --job-name=$input #SBATCH --cpus-per-task=1 #SBATCH --chdir=$HOME/output/easyQ #SBATCH --output=$HOME/output/log/%x.out #SBATCH --error=$HOME/output/log/%x.err # Load packages module purge module load r-light export R_LIBS_USER=Path1:Path2 Rscript --no-save $HOME/output/easyQ/${input}_cleaning.R > $HOME/output/easyQ/${input}_cleaning_batch.log EOF
内容的提问来源于stack exchange,提问作者legabgob
相关产品推荐
相关产品推荐

