You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:52:40