R语言source()函数跨文件夹调用报错问题求助
解决R中
source()调用脚本时路径找不到的问题 你的问题是定义了脚本路径变量,但未正确拼接路径与文件名,导致source()无法找到目标脚本。直接写完整路径能运行,但复用变量时出错。
你的当前代码(问题版本)
#Data individual_direction <-"C:/user/User1/Desktop/Data" #Script 1 direction_script1 <- "SERVERNAME/userX/Team/R/XXX" #Script 2 direction_script2 <- "SERVERNAME/userX/Team/R/YYY" #Running the script using the directory mentioned above source("SERVERNAME/userX/Team/R/XXX/Script1.R") #Merging the newly created files according to their column or row source("SERVERNAME/userX/Team/R/YYY/Script2.R")
报错信息
Error in file(filename, "r", encoding = encoding) : cannot open the connection In addition: Warning message: In file(filename, "r", encoding = encoding) : cannot open file 'direction_script1/Script1.R': No such file or directory
解决方案
问题核心是你尝试直接把变量名作为字符串的一部分传入source()(比如source("direction_script1/Script1.R")),但R会把direction_script1当成普通文本,而不是解析变量值。正确做法是用file.path()函数拼接路径与文件名,它会自动适配系统路径分隔符,避免手动拼接的错误。
修正后的代码:
# 数据目录 individual_direction <- "C:/user/User1/Desktop/Data" # 脚本所在路径 direction_script1 <- "SERVERNAME/userX/Team/R/XXX" direction_script2 <- "SERVERNAME/userX/Team/R/YYY" # 调用Script1.R source(file.path(direction_script1, "Script1.R")) # 调用Script2.R source(file.path(direction_script2, "Script2.R"))
说明
file.path()会根据操作系统自动选择正确的路径分隔符(Windows用\,类Unix系统用/),比手动拼接字符串更可靠- 后续如果脚本路径需要变更,只需修改
direction_script1和direction_script2的变量值,无需逐个修改source()中的硬编码路径,提升了代码的可维护性
内容的提问来源于stack exchange,提问作者Hotshot
相关产品推荐
相关产品推荐

