当R提示“没有这样的文件或目录”时,如何在R中打开CSV文件?

33

我有一个Excel文件想要在R中打开。我试过将Excel文件保存为csv或文本文件后,尝试了这两个命令:

read.table() 或 read.csv()

我认为问题的一部分是文件的位置。它保存在桌面上。我错过了什么吗?

以下是R的输出结果:

In file(file, "rt") :
  cannot open file 'Rtrial.csv': No such file or directory
> help.search("read.csv")
> read.csv("Rtrial.csv")
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'Rtrial.csv': No such file or directory
> read.table("tab")

3
提供更多信息通常会很有用;在这种特殊情况下,很难制作一个真正可复现的示例,但您至少可以展示您尝试过的完整命令以及getwd()的输出(即显示您的工作目录)。 - Ben Bolker
有关打开Excel文件(xls,xlsx)的一般建议,请参见https://dev59.com/w2025IYBdhLWcg3wST6Q#6100369 - Jeromy Anglim
16个回答

44

提出另一个选项,为什么不使用setwd('C:\ John \ Desktop')将工作目录(最好是通过脚本)设置为桌面,然后仅使用文件名读取文件。


+1:这是一个很好的想法;如果您更改目录结构,那么需要更改的只有这一行代码。 - Aaron left Stack Overflow
1
我仍然不清楚原帖作者为什么在其中一个迭代中遇到了权限错误,然后... - Ben Bolker
对于基于Unix的系统,应该像这样:setwd(“〜/ dir”) - affhendrawan

23

尝试一下

f <- file.choose()

让用户交互式地选择文件并将文件名保存在f中。

然后在保存的文件名上运行read.csv

d <- read.csv(f)

3
但是,每次运行脚本时您都需要手动选择文件。 - Benjamin
True。这对于探索性分析比脚本编写更有用。它还可以帮助找出文件的正确名称和路径,然后像Benjamin的答案一样写出来。 - Aaron left Stack Overflow

14

听起来你只是遇到了路径的问题。如果你使用反斜杠,请对其进行转义并包含完整的路径:"C:\\folder\\folder\\Desktop\\file.csv""C:/folder/folder/Desktop/file.csv"

myfile = read.csv("C:/folder/folder/Desktop/file.csv")  # or read.table()

避免在文件名中使用空格和符号可能也是明智的选择,但我相当确定空格是可以的。


文件(file, "rt")中的错误: 无法打开连接 另外: 警告信息: 在文件(file, "rt")中: 无法打开文件'C:\Documents and Settings\Manley\Desktop': 权限被拒绝 - illbill
@illbill:现在看起来是权限问题。它是只读的吗?你有读取权限吗? - Benjamin
@Svun 可能是正确的。如果文件已经在 Excel 中打开,R 将无法读取该文件。 - Benjamin

8
我必须结合Maiasaura和Svun的答案才能使其正常工作:使用setwd并转义所有斜杠和空格。
setwd('C:\\Users\\firstname\ lastname\\Desktop\\folder1\\folder2\\folder3')
data = read.csv("file.csv")
data

这个对我解决了问题。

6

以下是一种方法。它利用了R构建基于平台的文件路径的能力,因此可以在Mac OS和Windows上使用。此外,您不需要将xls文件转换为csv,因为有许多R软件包可以帮助您直接读取xls文件(例如gdata软件包)。

# get user's home directory
home = setwd(Sys.getenv("HOME"));

# construct path to file
fpath = file.path(home, "Desktop", "RTrial.xls");

# load gdata library to read xls files
library(gdata);

# read xls file
Rtrial = read.xls(fpath);

请告诉我这是否有效。

1
在WinXP(以及可能其他的Windows操作系统)中,“HOME”环境变量指向“My Documents”,桌面位于该文件夹的上级目录。如果存在“Sys.getenv("USERPROFILE")”,则需要使用它,否则需要使用paste(Sys.getenv("HOMEDRIVE"), Sys.getenv("HOMEPATH"), sep = "") - Richie Cotton
@Richie。感谢你的指引。我使用的是Mac OS,所以一直以为HOME会指向桌面的上级目录。 - Ramnath
在 Mac 上,HOME 指向您的 /Users 文件夹(通常是您的用户名),因此是桌面的父文件夹。 - Benjamin

4
  1. 在Excel中进行保存会使文件保持打开状态并锁定,因此您无法在R中打开它。请关闭Excel文件,否则无法在R中使用它。
  2. 提供完整路径并转义反斜杠 read.csv("c:\\users\\JoeUser\\Desktop\\JoesData.csv")

2
我曾经遇到过这种错误,当你将Excel文件移动到与R文件不同的目标位置或将R文件移动到与Excel文件不同的目标位置时,就会出现这种错误。
良好的实践:
1. 将.r和.csv文件保存在同一个目录中。 2. 从其目录中打开.r文件,而不是从rstuio的“打开文件”选项中打开r文件。
你还可以在“环境块”中使用“导入数据集”选项,只需单击该选项即可安装所需的软件包,并从下一次开始使用此选项读取数据集。你将不会再遇到这个错误了。我也感谢上面提供的答案。

enter image description here


是的,即使工作目录设置为CSV文件所在的位置;只要R / Rmd文件不在该目录中,它就无法找到CSV文件。 - FLonLon

1
我的问题非常简单,工作目录不是文件运行时打印的“Source”目录。要解决此问题,您可以使用getwd()setwd()来使相对链接起作用,或者在打开csv文件时使用完整路径。请注意保留html标签。
print(getwd()) # Where does the code think it is?
setwd("~/Documents") # Where do I want my code to be?
dat = read.csv("~/Documents/Data Visualization/expDataAnalysis/one/ac1_survey.csv") #just make it work!

1

读取Excel文件的另一种方式,包括新格式xlsx,可以使用speedR包(https://r-forge.r-project.org/projects/speedr/)。它是一个交互式和可视化的数据导入工具。除了导入外,您还可以从R工作区中筛选(子集)现有对象。


0
你可以添加文件的绝对路径。
heisenberg <- read.csv(file="C:/Users/tiago/Desktop/sample_100000.csv")

如果真的想运行类似这样的东西
heisenberg <- read.csv(file="sample_100000.csv")

然后,您需要更改工作目录以匹配 .CSV 文件所在的位置。在此处了解更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接