2011-12-17 62 views
6

我試圖在r中加載一個.rda文件,這是一個保存的數據幀。我不記得它的名字。從R中加載.rda文件獲取數據幀的名稱

我已經試過

a<-load("al.rda") 

然後不讓我做了什麼。我得到錯誤

Error:object 'a' not found 

我也嘗試過使用=號。

如何加載.rda文件以便我可以使用它?

我restared R 2與負載(「al.rda),我知道收到以下錯誤

Error: C stack usage is too close to the limit 
+0

只要執行'load(「al.rda」)'並執行'ls()'來檢查在全局環境中加載了哪些R對象。 – Ramnath 2011-12-17 21:09:18

+0

我在最後關閉未使用的連接3(al.rda)。我應該在這裏尋找什麼? – megv 2011-12-17 21:13:40

+1

@megv - 需要嘗試的其他幾件事情:1.安裝舊版本的R並嘗試在其中加載它 - 可能是該文件是舊的,而較新的R版本則會遇到問題。 2.嘗試在Linux上加載它。 – Tommy 2011-12-19 20:52:52

回答

4

我不得不重新安裝R ...不知怎的它是腐敗的。我期待的簡單命令

load("al.rda") 

終於工作了。

+0

+1 - 我感覺你的痛苦!這是一個討厭的... – Tommy 2011-12-20 02:09:09

5

使用 '連接',然後 'LS' 有名稱的說法是這樣的:。

attach("al.rda") 
ls("file:al.rda") 

數據文件現在是你的搜索路徑的位置2,最有可能做:。

search() 
ls(pos=2) 

啓蒙打字ŧ除非你在搜索路徑位置1有一些東西,否則任何保存在al.rda中的對象的名稱現在都會得到它,但是如果有的話,R可能會通過一些關於屏蔽另一件事的消息來警告你。

但是我現在懷疑你沒有在你的RData文件中保存任何東西。有兩個原因:

  1. 你說你沒有得到一個錯誤信息
  2. 負荷說,有什麼裝

我可以複製這種情況。如果你保存(file =「foo.RData」),那麼你會得到一個空的RData文件 - 你可能打算做的是save.image(file =「foo.RData」),它可以保存所有的對象。

你的.rda文件有多大?如果它小於100字節(我的空RData文件長度爲42字節),那麼我懷疑是發生了什麼事情。

+0

我收到字符(0) – megv 2011-12-17 21:19:28

+0

我懷疑它裏面什麼都沒有。請參閱上面的編輯... – Spacedman 2011-12-17 22:21:36

+0

大小爲317,888kb – megv 2011-12-18 02:37:24

4

load函數確實返回它加載的變量列表。當您加載「al.rda」時,我懷疑你實際上得到了錯誤。加載時R輸出的是什麼?的

示例如何應該工作:

d <- data.frame(a=11:13, b=letters[1:3]) 
save(d, file='foo.rda') 
a <- load('foo.rda') 
a # prints "d" 

只是可以肯定,檢查load功能你其實調用的是原單:

find("load") # should print "package:base" 

編輯既然你現在在加載文件時出現錯誤,它可能以某種方式損壞。試試這個,說什麼它打印:

file.info("a1.rda") # Prints the file size etc... 
readBin("a1.rda", "raw", 50) # reads first 50 bytes from the file 

無需訪問該文件,就很難調查更多...也許你可以以某種方式共享文件(http://www.filedropper.com或類似) ?

+0

猜測可能出現的問題,'getwd()'和'list.files()'(或'load(file.choose())'是一些可能有用的工具爲什麼文件可能沒有加載(如果不是); *和*確保該文件真的被稱爲'al.rda'而不是'a1.rda' ... – 2011-12-17 22:09:53

+0

這是我使用的命令> l1 < -load( 「al.rda」) > L1 錯誤:對象 'L1' 未找到 另外:警告消息: 關閉未使用的連接3(al.rda) – megv 2011-12-18 02:44:40

+0

@megv - 你說'找到( 「負荷」 )'print? – Tommy 2011-12-18 02:58:58

0

我通常使用save來保存只有一個對象,然後使用下面的實用程序方法將該對象檢索到給定的變量名稱中使用load,但進入臨時名稱空間以避免覆蓋現有對象。也許這將是對他人有所幫助,以及:

load_first_object <- function(fname){ 
    e <- new.env(parent = parent.frame()) 
    load(fname, e) 
    return(e[[ls(e)[1]]]) 
} 

的方法當然可以擴展到也返回對象的命名對象和列表,但這個簡單的版本,對我來說是最有用的。

1

我也有類似的問題,它解決了沒有重新安裝R.例如做

load("al.rda)工作正常,但是如果你做 a <- load("al.rda")將無法​​正常工作。

+0

是的,這是我的問題。 '自己設置變量值。 – schoon 2017-09-17 06:47:13

+0

缺少上面的s/be'load(「al.rda」)' – 2018-01-29 14:59:38