从 Rstudio 查看器恢复数据框?
Recovering dataframe from Rstudio viewer?
您好,我在名为 'pull3' 的 rstudio session 中创建了一个数据框。然后我离开了 session 并开始了一个新项目。当我回到之前的session时,我可以看到我之前使用Viewer()找到它时的dataframe,但是它已经不在环境变量中了,我似乎无法download/reference 完全没有。
看起来它存储在 data://pull3 中...有人知道如何访问它吗?
谢谢。
在您的项目目录中,您会发现一个名为 .Rproj.user
的隐藏文件夹。在您的目录树中,最终您会找到一个名为 viewer-cache
的文件夹,其中包含一个 .Rdata
文件。
我怀疑目录名称是随机的,因此您必须进行一些挖掘。如果您使用的是 Linux 或 MacOS,您可以尝试 find ~/Project | grep ".Rdata"
来加快进程。
这是我刚刚保存的玩具数据的示例。
Project
└── .Rproj.user
└── D31E74F4
└── viewer-cache
└── 6F635E12.Rdata
您可以使用 load()
:
加载 .Rdata
load("~/Project/.Rproj.user/D31E74F4/viewer-cache/6F635E12.Rdata")
然后在您的全局环境中将有一个与该文件同名的对象:
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 的回答,这里有一个函数 returns 一个包含它恢复的所有对象的列表。
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
}
您好,我在名为 'pull3' 的 rstudio session 中创建了一个数据框。然后我离开了 session 并开始了一个新项目。当我回到之前的session时,我可以看到我之前使用Viewer()找到它时的dataframe,但是它已经不在环境变量中了,我似乎无法download/reference 完全没有。
看起来它存储在 data://pull3 中...有人知道如何访问它吗?
谢谢。
在您的项目目录中,您会发现一个名为 .Rproj.user
的隐藏文件夹。在您的目录树中,最终您会找到一个名为 viewer-cache
的文件夹,其中包含一个 .Rdata
文件。
我怀疑目录名称是随机的,因此您必须进行一些挖掘。如果您使用的是 Linux 或 MacOS,您可以尝试 find ~/Project | grep ".Rdata"
来加快进程。
这是我刚刚保存的玩具数据的示例。
Project
└── .Rproj.user
└── D31E74F4
└── viewer-cache
└── 6F635E12.Rdata
您可以使用 load()
:
.Rdata
load("~/Project/.Rproj.user/D31E74F4/viewer-cache/6F635E12.Rdata")
然后在您的全局环境中将有一个与该文件同名的对象:
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 的回答,这里有一个函数 returns 一个包含它恢复的所有对象的列表。
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
}