繁体   English   中英

如何从Rdata文件分配数据帧

[英]How to assign a data frame from a Rdata file

我在以下目录“ /..../1_5_setpoint.Rdata”中有一个data.frame。

数据帧的名称为“ setpoint”,文件的名称为“ 1_5_setpoint”。 我想创建一个名称为“ 1_5_setpoint”的data.frame。 这是我的代码:

  assign("1_5_setpoint",  get(load("/..../1_5_setpoint.Rdata")))

问题是,我最终不得不访问内存中的数据帧:一个称为“设定点”(我不想要这个),另一个称为“ 1_5_setpoint”(我想要这个)。

如果数据很大,可能会导致问题。

有什么建议么?

如果将数据另存为RDS而不是Rdata会更容易,然后可以将其简单地加载到具有所需名称的对象中:

saveRDS(mtcars, "mtcars.rds")
cars <- readRDS("mtcars.rds")

Rdata文件用于存储您创建的所有对象,请看下面的说明 如此处所述 RDS是用于存储单个对象的面糊解决方案。

@Ron是正确的解决方案,@ Konrad是正确的。 有时,您无法选择获取RDS文件,而只能获取.RData文件。 在那种情况下,我知道的最简单的方法是使用一个函数加载数据,然后返回其中的唯一变量,或者允许选择要返回的变量。

一个例子可能是:

myLoad <- function(filename, variable) {
  tmp.env <- new.env()
  varnames <- load(filename, envir=tmp.env)
  if (missing(variable)) {
    ## Choose the variable name as the only variable in the file or
    ## give an error.
    if (length(varnames) == 1) {
      return(get(varnames, envir=tmp.env))
    } else {
      stop("More than one variable present in the file, please specify which variable to extract.  Choices are: ",
           paste(varnames, sep=", "))
    }
  } else {
    return(get(variable, envir=tmp.env))
  }
}

ls()
save(mtcars, file="mtcars.RData")
mtcars_1_5 <- myLoad("mtcars.RData")
identical(mtcars, mtcars_1_5)
ls()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM