2011-04-06 124 views
13

我有一個excel文件,我想在R中打開。在將excel文件另存爲csv文件或文本文件後,我嘗試了這兩個命令。如何在R中顯示「沒有這樣的文件或目錄」時在R中打開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") 
+2

提供更多信息通常是有用的;在這種特殊情況下,很難做出真正可重複的示例,但是您至少可以顯示您嘗試的完整命令,以及getwd()的輸出[即顯示您的工作目錄] – 2011-04-06 16:28:59

+0

以獲取打開excel文件的一般建議(xls ,xlsx),請參閱http://stackoverflow.com/questions/6099243/read-an-excel-file-directly-from-ar-script/6100369#6100369 – 2012-10-10 03:46:15

回答

28

拋出了另一種選擇,爲什麼不通過設置工作目錄(最好腳本)使用setwd('C:\John\Desktop'),然後使用文件名讀取文件

+0

+1:這是一個好主意;如果你改變你的目錄結構,那麼所有需要改變的就是這一行。 – Aaron 2011-04-06 20:35:51

+1

仍然不清楚爲什麼原始海報獲得了迭代中的權限錯誤,那麼對於基於unix的 – 2011-04-06 22:55:56

+0

,應該像這樣'''setwd(「〜/ dir」)'''。 – affhendrawan 2017-11-02 07:21:23

9

聽上去像是你有路徑的問題。包含完整路徑,如果使用反斜線,則需要轉義:"C:\\folder\\folder\\Desktop\\file.csv""C:/folder/folder/Desktop/file.csv"

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

這也可能是明智的,避免在文件名中的空格和符號,雖然我相當肯定空間是確定。

+0

我仍然收到相同的錯誤。有什麼建議麼? – illbill 2011-04-06 16:06:35

+0

嗯,它是一個不同的錯誤.... – illbill 2011-04-06 16:08:22

+0

文件錯誤(文件,「rt」):無法打開連接 另外:警告消息: 在文件(文件,「rt」): 無法打開文件' C:\ Documents and Settings \ Manley \ Desktop':權限被拒絕 > – illbill 2011-04-06 16:09:18

11

嘗試

f <- file.choose() 

以交互方式選擇文件,並在f保存名稱。

然後在保存的文件名

d <- read.csv(f) 
+0

但是,您必須在每次運行腳本時手動選擇文件。 – Benjamin 2011-04-06 15:29:41

+0

是的。這對探索性分析比腳本更有用。它也可以幫助找出文件的正確名稱和路徑,然後可以按照本傑明的答案寫出。 – Aaron 2011-04-06 15:48:34

6

運行read.csv下面是做這件事。它使用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」環境變量指向「我的文檔」,桌面位於該文件夾的父級。如果存在,或者粘貼(Sys.getenv(「HOMEDRIVE」),Sys.getenv(「HOMEPATH」),sep =「」)',你需要'Sys.getenv(「USERPROFILE」)'。 – 2011-04-06 17:02:48

+0

@裏奇。感謝指針。我使用Mac OS,所以假設HOME會指向桌面的父項。 – Ramnath 2011-04-06 20:16:02

+0

在mac HOME上指向你的/ Users文件夾(通常這是你的名字),所以是的,這是桌面的父文件夾 – Benjamin 2011-04-06 20:19:26

3
  1. 保存爲excel將保持文件打開並鎖定它,因此您無法打開它。關閉Excel文件,否則您將無法使用它R.
  2. 提供完整的路徑和逃避反斜槓read.csv("c:\\users\\JoeUser\\Desktop\\JoesData.csv")
1

讀取Excel的另一種方式(包括新格式xlsx)可能是speedR(https://r-forge.r-project.org/項目/轉速r /)。它是一個交互式和可視化的數據導入器。除了導入之外,您還可以從R工作區中過濾(子集)現有對象。

+0

剛剛嘗試過,但無法預覽我的3Mb文件。 – 2012-01-16 19:20:36

0

MAC OS它也發生在我身上。我只是從R工具欄MISC中選擇,然後選擇更改工作目錄。我可以選擇保存.csv文件的目錄。當我回到命令行並輸入getwd()時,完整的目錄被更新並正確,read.csv函數終於可以工作。

0

我有同樣的問題,當我檢查了文件瀏覽器中的文件的屬性,它讓我看到一條消息:

「安全:該文件來自另一臺計算機,可能被阻止以幫助保護該計算機「

您點擊」解鎖「按鈕,並且...您可以從R存取文件,沒有任何問題,只需使用read.csv()函數並從指定爲工作目錄的目錄即使與您正在訪問的文件目錄不同。

0

我剛剛有這個問題,我第一次切換到另一個目錄,然後切換回來,問題得到解決。

5

我必須結合Maiasaura和Svun的答案才能使它工作:使用setwd並轉義所有的斜槓和空格。

setwd('C:\\Users\\firstname\ lastname\\Desktop\\folder1\\folder2\\folder3') 
data = read.csv("file.csv") 
data 

這解決了我的問題。

0

我的問題非常簡單,工作目錄不是在文件運行時打印的「源」目錄。爲了解決這個問題,你可以使用getwd()setwd()來讓你的相對鏈接正常工作,或者在打開csv時使用完整路徑。

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! 
相關問題