【问题标题】:How to save data file into .RData?如何将数据文件保存到.RData?
【发布时间】:2013-11-26 20:42:26
【问题描述】:

我想将数据保存到.RData 文件中。

例如,我想将两个 csv 文件和一些信息保存到 1.RData

这里,我有两个 csv 文件

1) file_1.csv contains object city[[1]]
2) file_2.csv contains object city[[2]]

并额外保存其他值,国家和人口如下。 所以,我想我首先需要从两个 csv 文件中创建对象“城市”。

1.RData的结构可能是这样的:

> data = load("1.RData")

> data
[1] "city"  "country"  "population"

> city
  [[1]]               
  NEW YORK         1.1
  SAN FRANCISCO    3.1

  [[2]]
  TEXAS            1.3
  SEATTLE          1.4

> class(city)
  [1] "list"

> country
  [1] "east"  "west"  "north"

> class(country)
  [1] "character"

> population
  [1] 10  11  13  14   

> class(population)
  [1] "integer"

file_1.csvfile_2.csv 有一堆行和列。

如何使用 csv 文件和值创建这种类型的 RData?

【问题讨论】:

    标签: r rdata


    【解决方案1】:

    有三种方法可以保存 R 会话中的对象:

    保存 R 会话中的所有对象:

    save.image() 函数将保存当前 R 会话中的所有对象:

    save.image(file="1.RData") 
    

    然后可以使用load() 函数将这些对象加载回新的 R 会话:

    load(file="1.RData")
    

    在你的 R 会话中保存一些对象:

    如果你想保存一些,但不是所有的对象,你可以使用save()函数:

    save(city, country, file="1.RData")
    

    同样,这些可以使用load() 函数重新加载到另一个 R 会话中:

    load(file="1.RData") 
    

    保存单个对象

    如果要保存单个对象,可以使用saveRDS() 函数:

    saveRDS(city, file="city.rds")
    saveRDS(country, file="country.rds") 
    

    您可以使用 readRDS() 函数将这些加载到您的 R 会话中,但您需要将结果分配给所需的变量:

    city <- readRDS("city.rds")
    country <- readRDS("country.rds")
    

    但这也意味着您可以在需要时为这些对象赋予新的变量名称(即,如果这些变量已经存在于您的新 R 会话中但包含不同的对象):

    city_list <- readRDS("city.rds")
    country_vector <- readRDS("country.rds")
    

    【讨论】:

    • 这是一个很好的答案。带有相应 load() 指令的额外行将使其更好地 IMO。
    【解决方案2】:

    只是添加一个额外的功能,如果你需要它。您可以在命名位置中包含变量,例如日期标识符

    date <- yyyymmdd
    save(city, file=paste0("c:\\myuser\\somelocation\\",date,"_RData.Data")
    

    这是你可以随时查看它的运行时间

    【讨论】:

      【解决方案3】:

      或者,当您想要保存单个 R 对象时,我建议使用 saveRDS

      您可以使用 saveRDS 保存 R 对象,然后使用 readRDS 使用新变量名将它们加载到 R 中。

      例子:

      # Save the city object
      saveRDS(city, "city.rds")
      
      # ...
      
      # Load the city object as city
      city <- readRDS("city.rds")
      
      # Or with a different name
      city2 <- readRDS("city.rds")
      

      但是当您想在工作区中保存许多/所有对象时,请使用 Manetheran 的答案。

      【讨论】:

      • 我不知道为什么没有更广泛地推荐/知道这一点。这通常是比save / load 更好的解决方案。
      • @KonradRudolph 为什么saveRDS 更好?对于save/load,您可以使用save(object, file)newObject &lt;- load(file)。对于 RDS,您可以使用 saveRDS(object, file)newObject &lt;- readRDS(file)。它们看起来和我很相似,但是对于使用saveRDSreadRDS 的几个额外按键。我想我错过了什么。
      • @jabberwocky load 默认将对象转储到您的(全局)环境中。这是一个可怕的想法。你想要readRDS给你的控制权。 R 的load 在这里积极宣传不良做法。
      • @jabberwocky 想想这个场景:假设你保存了你的矩阵,testsave(test, file = "example.Rdata")。然后您稍后将test 定义为其他内容(例如test &lt;- c(1:100))。当您执行load("example.Rdata") 时会发生什么?它将替换您新定义的 test 变量。另一种情况:如果您需要保存在example.rdata 中的数据,但又想保留新定义的test 变量怎么办。您能否轻松example.Rdata 加载到新变量中,例如test3load
      • 我在save 中找到的实用程序是将我当前的环境保存在R 中,但要保存单个R 对象,我发现saveRDSreadRDS 更好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 2021-03-19
      • 2013-09-02
      • 2017-12-26
      • 1970-01-01
      • 2016-10-19
      • 2011-04-26
      相关资源
      最近更新 更多