如何在会话之间方便地移动对象

时间:2018-10-12 14:10:46

标签: r

在理想的工作流程中显然没有什么可建议的,但有时它可能会有用。

可以轻松完成吗?

1 个答案:

答案 0 :(得分:4)

我做了以下功能,它将一个临时文件放在您的主文件夹中,并在默认情况下将其删除:

shoot <- function(..., list = character(), rm = FALSE){
  path <- file.path(path.expand("~"),"temp_object.RData")
  save(..., list =  list, file = path)
  if(rm) rm(list = c(list,as.character(substitute(alist(...))[-1])),
                envir = parent.frame())
  invisible(NULL)
}

loot <- function(rm = TRUE){
  path <- file.path(path.expand("~"),"temp_object.RData")
  if(file.exists(path)){
    load(path,envir = parent.frame())
    if(rm) file.remove(path)
  } else {
    stop("nothing to loot!")
  }
  invisible(NULL)
}

test <- "abcd"
shoot(test)
rm(test)
loot() # in practice from another session
test
# [1] "abcd"

在我的情况下,如果一个RStudio会话存在错误并且我无法绘图,则很有用,因此可以将其发送给另一个。

只需更改默认路径,即可在网络中使用它来轻松地在同事之间传递数据。

感谢@MrFlick的建议