【问题标题】:Error in file(filename, "r", encoding = encoding) : cannot open the connection文件错误(文件名,“r”,编码 = 编码):无法打开连接
【发布时间】:2019-01-29 12:42:23
【问题描述】:

我有一个RScript 文件(我们称之为main.r),它引用了另一个文件,使用以下代码:

source("functions.R")

但是,当我运行 RScript 文件时,它抱怨以下错误:

    Error in file(filename, "r", encoding = encoding) : 
      cannot open the connection
    In addition: Warning message:
    In file(filename, "r", encoding = encoding) :
      cannot open file 'functions.R': No such file or directory

我确定,我的 main.R 文件在同一目录中的 functions.R 旁边。 我可以在同一目录中的Rmd (RMarkdown) 文件中调用functions.R

【问题讨论】:

  • 您是否在main中设置了工作目录?
  • 我不知道,它是什么。你能提供更多细节吗?我也试过这个source("./functions.R")
  • 我遇到了同样的问题,我通过修改我正在执行 source() 的文件解决了这个问题。该文件还在不存在的文件上调用 source() 。 (我移动了目录,忘记复制其他文件)

标签: r


【解决方案1】:

在您的情况下,尝试在main.R 中添加setwd("path/to/project/"),其中path/to/project/ 包含main.R

那么你可以直接sourcefunctions.Rsource("functions.R")(如果两个文件位于同一目录中)或source("sub-folder/functions.R")(如果后一个文件包含在子文件夹中)。

如果您不是在处理 RStudio 项目,main.R 的工作目录可能是您的主目录。

【讨论】:

  • 是绝对路径吗?或者它可以是相关的?我试过source("./functions.R")
  • @SalmanLashkarara 我相信这取决于您的主目录(或脚本的当前目录)。例如,如果您有一个 RStudio 项目,则默认情况下该路径将是项目的路径。然后您可以引用关系路径。或者,如果 /functions.R 是您的主目录的子目录,也应该可以使用。
  • 嗨 niko,我有同样的问题,但我真的迷失在我的代码中,你能写一个例子或告诉我在哪里写 setwd。我把这个:{r echo=FALSE} source("C:/Users/myname/Documents/R/data/myfunction.R"). 。但仍然没有运行。
猜你喜欢
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多