R list.files(my_working_directory) 没有显示文件,但我知道它们在那里。怎么修?

Posted

技术标签:

【中文标题】R list.files(my_working_directory) 没有显示文件,但我知道它们在那里。怎么修?【英文标题】:R list.files(my_working_directory) shows no files but I know they are there. How to fix? 【发布时间】:2013-08-06 14:48:28 【问题描述】:

我正在尝试使用外部硬盘驱动器中的目录作为工作目录来使用 R。我可以将工作目录设置到我想要的位置,但是当我使用list.files R 时什么都看不到。我也不能使用read.delim 来加载文件。

例如:

> rm(list = ls())
> WD<-"../../../Volumes/My_HD/my_working_directory" 
> setwd(WD) 
> getwd()
[1] "/Volumes/My_HD/my_working_directory"

到目前为止一切都很好,但是:

> list.files(WD)
character(0)

虽然我希望有一份我知道的文件列表,但我可以使用 Finder 和终端查看和打开这些文件。实际上,R 脚本本身就在该目录中。

如果我尝试打开一个文件,我会得到这样的结果:

> myfile <- read.delim(paste(WD,"/file_name", sep = ""), header = T)
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file '../../../Volumes/My_HD/my_working_directory/file_name': No such file or directory

我以为我在指定目录路径时做错了,但我尝试从 RStudio 指向并单击(会话>设置工作目录和>到源文件位置或>选择目录...)并得到相同的结果结果不开心。

我在 MacBookPro (OS X 10.7.05) 上使用 R 版本 2.15.1。我从 RStudio 版本 0.97.551 运行 R,但问题与 RStudio 无关,因为当我直接在 R 上尝试时也会发生这种情况。

任何帮助将不胜感激。谢谢。

【问题讨论】:

设置工作目录后list.files(getwd()) 会返回什么?由于我不明白的原因,我发现 R 对相对路径有点敏感。 很简单,你的文件夹路径不对。 @Peter list.files(getwd()) 为我提供了所需的文件列表,但仅list.files 就一直失败。确实很奇怪。我想我将更改我的代码以用 getwd() 替换我的 WD 目录对象。谢谢。只是出于好奇,@RomanLuštrik 我的路出了什么问题?如果我尝试从 RStudio 指向并单击,我会得到相同的结果和 因为WD 是一个相对 路径,所以list.files(WD) 只会在您执行setwd(WD) 之前起作用。在您执行setwd(WD) 之后,所有这些都应该工作:list.files()list.files('.')list.files(getwd())。如果WD绝对 路径("/Volumes/My_HD/my_working_directory"),list.files(WD) 将适用于您当前的目录。 如何解决? 你可以 1) 在任何地方使用绝对路径,即设置 WD &lt;- "/Volumes/My_HD/my_working_directory" 或 2) 保持 WD 原样,但在你之后 @987654341 @,使用本地目录'.'代替WD 【参考方案1】:

由于我认为您希望在您的路径中保持一些相对性,并且因为您使用的是 RStudio,所以我将分享一种我经常使用的策略。如果我正确地猜到了你在寻找什么,这应该完全回避这个问题。

首先在 RStudio 中创建一个新项目。打开该项目后,您会发现您的工作目录getwd() 将方便地设置在您的项目文件所在的位置。

如果您正在做更大的事情,您可以使用“ProjectTemplate”包让自己走上正轨。在我的系统上:

# install.packages(c("ProjectTemplate"))
library(ProjectTemplate)
create.project("~/Desktop/MyProject")

这设置了一个项目框架,包括单元测试文件夹、doc 文件夹以及我可能需要的“正确”R 项目的所有其他内容。

接下来我从上面提到的 RStudio 创建一个项目。从现有目录创建它。项目将打开,您的所有路径都将相对于“MyProject”文件夹的根目录。

我还喜欢在使用 git 存储库时对其进行初始化。从 OS X 终端窗口:

$ cd ~/Desktop/MyProject; git init

...然后添加/提交裸骨架

$ git add * ; git commit -m "initial project skeleton"

从您的 RStudio 会话中,您可以加载与项目根目录相关的内容。假设您的数据子文件夹中有 iris.csv:

read.csv("./data/iris.csv", header=TRUE)

【讨论】:

我认为@flodel 对绝对和相对路径的评论更适合我的问题,因为我得到了一个脚本,它在多个点使用对象 WD 并且无法使其工作。

以上是关于R list.files(my_working_directory) 没有显示文件,但我知道它们在那里。怎么修?的主要内容,如果未能解决你的问题,请参考以下文章

list.files() 找不到文件夹中的所有文件

R do.call函数中的错误[关闭]

列出与R中的完整路径模式匹配的所有文件

在R中排列日期字符

在R中,从列表中的文件夹中读取文件,并按文件名(无文件格式)分配列表元素名称(.fa)

如何根据 R 中的原始文件名将包含多个数据帧的大列表保存为单个 csv