簡體   English   中英

從 Rstudio 查看器中恢復 dataframe?

[英]Recovering dataframe from Rstudio viewer?

在此處輸入圖像描述

您好,我在名為“pull3”的 rstudio session 中制作了 dataframe。 然后我離開了 session 並開始了一個新項目。 當我回到之前的 session 時,我可以看到我之前使用 Viewer() 找到它時的 dataframe,但它不再在環境變量中,我似乎根本無法下載/引用它。

看起來它存儲在 data://pull3 中......有人知道如何訪問它嗎?

謝謝。

在您的項目目錄中,您會找到一個名為.Rproj.user的隱藏文件夾。 在您的目錄樹中,最終您會找到一個名為viewer-cache的文件夾,其中包含一個.Rdata文件。

我懷疑目錄名稱是隨機的,因此您必須進行一些挖掘。 如果您使用的是 Linux 或 MacOS,您可以嘗試find ~/Project | grep ".Rdata" find ~/Project | grep ".Rdata"以加快進程。

這是我剛剛保存的玩具數據的示例。

Project
└── .Rproj.user
    └── D31E74F4
        └── viewer-cache
            └── 6F635E12.Rdata

您可以使用load()加載該.Rdata

load("~/Project/.Rproj.user/D31E74F4/viewer-cache/6F635E12.Rdata")

然后將有一個 object 與您的全局環境中的文件同名:

head(`6F635E12`)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

如果您沒有使用項目,您可能會在~/.rstudio-desktop/viewer-cache中找到該文件。

根據 Ian 的回答,這里是一個 function,它返回一個包含它恢復的所有對象的列表。

recover_data_viewer_cache_objects <- function() {
  active_project <- rstudioapi::getActiveProject()

  if(is.null(active_project)) {
    if(.Platform$OS.type == "windows")
      viewer_cache_files <- Sys.glob(file.path(Sys.getenv("localappdata"),
                                               "RStudio-Desktop",
                                               "viewer-cache",
                                               "*.Rdata"))
    else
      viewer_cache_files <- Sys.glob(file.path("~",
                                               ".rstudio-desktop",
                                               "viewer-cache",
                                               "*.Rdata"))
  } else {
    viewer_cache_files <- Sys.glob(file.path(active_project,
                                             ".Rproj.user",
                                             "*",
                                             "viewer-cache",
                                             "*.Rdata"))
  }

  # record environment, load cached objects, return environment diff
  # (apply family does not work with base::load() or base::get())
  ls_0 <- ls()
  for(o in viewer_cache_files)
    load(o)
  new_objects <- setdiff(ls(), c(ls_0, "ls_0", "o"))
  recovered_objects <- list()
  for(o in seq_along(new_objects))
    recovered_objects[[new_objects[o]]] <- get(new_objects[o])

  recovered_objects
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM