文件错误(文件," rt"):运行OK后无法打开当前发生的连接

时间:2017-01-04 23:39:00

标签: r

我曾试图重新运行一些以前运作良好的程序,并且大多数程序使用与下面相同的调用,但现在它们都不起作用。

这可能是一个潜在的问题,代码变为生命,或者它在我的整体环境中已经发生了变化。

我尝试从2个月前使用程序时从存档重新加载完整目录,但它们现在不起作用。

在阅读了之前的答案后,我试过了

setwd("文档/ Paper1 / ThirdDraft / DTW_DATA")`

使数据和程序文件夹同行,但R不会让我改变它。

我偶尔是R的用户并且不熟悉环境,因此对可能的方法提供一些提示/建议会非常有帮助。

谢谢

数据文件位于Documents/Paper1/ThirdDraft/DTW_DATA/Binned_Base_Data 工作目录位于/ Users / briank / Documents / Paper1 / ThirdDraft / DTW_DATA / DTW_R_Programmes`

#
# Import Data 
#

chan11Data <-   read.csv("Documents/Paper1/ThirdDraft/DTW_DATA/Binned_Base_Data/Channel_11.csv",
+           header = TRUE, fill = TRUE)

Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") :
  cannot open file 'Documents/Paper1/ThirdDraft/DTW_DATA/Binned_Base_Data/Channel_11.csv': No such file or directory

2 个答案:

答案 0 :(得分:1)

如果您的工作目录是

/Users/briank/Documents/Paper1/ThirdDraft/DTW_DATA/DTW_R_Programmes

然后R将找不到此文件

"Documents/Paper1/ThirdDraft/DTW_DATA/Binned_Base_Data/Channel_11.csv"

但它应该能够找到

"/Users/briank/Documents/Paper1/ThirdDraft/DTW_DATA/Binned_Base_Data/Channel_11.csv"

"../Binned_Base_Data/Channel_11.csv"

答案 1 :(得分:-1)

您正在混淆绝对和相对文件路径,因此,您正在实施错误的编码实践,这会导致您现在遇到的麻烦。

要清楚,

Documents/Paper1/ThirdDraft/DTW_DATA

是从磁盘根目录开始的绝对文件路径,而

/Users/briank/Documents/Paper1/ThirdDraft/DTW_DATA/

是一个相对文件路径,它将在您的工作目录中启动。

你目前的困境

  1. 由于您所做的一切都发生在以下目录中,因此该目录应该是您的工作目录:

    DTW_DATA.Rproj

    如果您使用RStudio,我建议您这样做,那么我建议您在该目录中创建一个项目。打开Rroject(例如setwd)会自动将工作目录设置为上面的路径(即您使用DTW_R_Programmes执行的操作)。

  2. 现在,在该目录中,您似乎有两个目录:

    • Binned_Base_Data - 这就是我认为您的R脚本所在的位置
    • Channel_11.csv - 这是您的数据,例如DTW_R_Programmes位于
  3. 可能的修复

    如果您通过双击打开R脚本,可能是您的工作目录设置为../Binned_Base_Data/Channel_11.csv - 在这种情况下,您需要“返回”一个级别来查找数据,如在

    ../

    另一种可能的解决办法

    我建议的解决方案是将所有R脚本移动到项目的根目录,即DTW_DATA,而不是像上面那样使用DTW_DATA/ 1_a_script.r 2_another_script.r etc. Binned_Base_Data/ Channel_11.csv Channel_12.csv etc. 。这应该会限制未来的混乱,并使您的项目更易于管理。

    你想拥有的是

    d <- read.csv("Binned_Base_Data/Channel_11.csv")
    

    然后,在您的脚本中,只需指出

    {{1}}

    ...并享受它的纯粹简洁。

      

    如果你的#rstats脚本的第一行是“setwd(...”我将进入你的实验室并将你的计算机设置为火灾。 - Twitter