read.tree()在RStudio正常但高校计算集群报错的问题求助
问题原因与解决方案
问题原因
- 路径不匹配:你在RStudio中读取的
BirdzillaHackett2.tre实际路径,和集群代码里写的/BirdzillaHackett2.tre完全不同。RStudio可能默认工作目录就是文件所在文件夹,或者你用了正确的本地绝对路径;但集群根目录/下存在同名的BirdzillaHackett2.tre目录,导致R误将其识别为目录而非文件。 - 工作目录差异:集群运行Slurm作业时,默认工作目录通常是你的用户主目录,而非文件所在的文件夹,直接写根目录路径自然找不到目标文件。
解决方法
- 使用正确的绝对路径:先在集群终端通过
find / -name "BirdzillaHackett2.tre" -type f命令定位文件的真实绝对路径,比如结果是/home/powellhall/data/BirdzillaHackett2.tre,将代码修改为:
Overall_Trees <- ape::read.tree("/home/powellhall/data/BirdzillaHackett2.tre", keep.multi = TRUE)
- 指定工作目录后用相对路径:在R脚本开头设置工作目录为文件所在文件夹:
setwd("/home/powellhall/data") Overall_Trees <- ape::read.tree("BirdzillaHackett2.tre", keep.multi = TRUE)
或者在Slurm调度脚本中先切换目录再运行R脚本:
#!/bin/bash #SBATCH ... # 你的Slurm参数 cd /home/powellhall/data Rscript your_analysis_script.R
- 提前验证路径:在集群终端执行
ls /path/to/BirdzillaHackett2.tre,确认输出是文件而非目录;如果显示is a directory,说明你找错了位置,需要重新定位真实的tre文件。
内容的提问来源于stack exchange,提问作者PowellHall
相关产品推荐
相关产品推荐

