簡體   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