首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从readRDS()语句自动编写saveRDS()语句

从readRDS()语句自动编写saveRDS()语句
EN

Stack Overflow用户
提问于 2014-08-26 16:35:24
回答 1查看 1.1K关注 0票数 4

我经常在大量的数据处理之后编写saveRDS()语句,这促使我立即编写readRDS(),以便将来进行可重复的编码,访问.RDS文件,以便更快地加载到R中。下面概述了从类型化readRDS()语句生成saveRDS()语句的手动过程。如何改进呢?如何在EMACS和/或R中为自己编写宏/函数

代码语言:javascript
运行
复制
## I type these out:
saveRDS(dems,"./_00_data_original/dems.RDS")
saveRDS(meds,"./_00_data_original/meds.RDS")
saveRDS(anti,"./_00_data_original/anti.RDS")

## Then I rectangle kill (C-x-r-k) the file names and commas
## and rectangle yank (C-x-r-y) them on the left hand side
## note:  depends on filenames being equal lengths
dems,saveRDS("./_00_data_original/dems.RDS")
meds,saveRDS("./_00_data_original/meds.RDS")
anti,saveRDS("./_00_data_original/anti.RDS")

## then I Esc-Shift-5 to query replace ",saveRDS" with " <- readRDS"
dems <- readRDS("./_00_data_original/dems.RDS")
meds <- readRDS("./_00_data_original/meds.RDS")
anti <- readRDS("./_00_data_original/anti.RDS")
EN

回答 1

Stack Overflow用户

发布于 2014-08-26 17:45:06

也许您可以使用这样的东西:

代码语言:javascript
运行
复制
saveRead <- function(..., path, prefix = "", envir = .GlobalEnv) {
  dots <- substitute(list(...))[-1]
  objs <- sapply(dots, deparse)
  new_objs <- paste0(prefix, objs)
  paths <- file.path(path, paste0(objs, ".RDS"))
  invisible(lapply(seq_along(objs), function(x) {
    saveRDS(get(objs[x], envir = envir), file = paths[x])
    assign(new_objs[x], readRDS(paths[x]), envir = envir)
  }))
}

下面是一个例子。我只是写信给一个tempdir,但是您将输入您实际需要的目录。此外,为了演示起见,我在对象名(在重读时)以"test_“作为前缀。将prefix设置为"" (默认)以保留原始名称。

代码语言:javascript
运行
复制
a <- 1:2
b <- 3:4
ls()
# [1] "a"        "b"        "saveRead"

x <- tempdir()
list.files(x, ".RDS")
# character(0)

saveRead(a, b, path = x, prepend = "test_")
ls()
# [1] "a"        "b"        "saveRead" "test_a"   "test_b"   "x"       
list.files(x, ".RDS")
# [1] "a.RDS" "b.RDS"

为了重现你的行为,它可以用来:

代码语言:javascript
运行
复制
saveRead(dems, meds, anti, path = "./_00_data_original")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25510858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档