如何将数据文件保存到.RData?

use*_*161 61 r rdata

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

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

在这里,我有两个csv文件

1) file_1.csv contains object city[[1]]
2) file_2.csv contains object city[[2]]
Run Code Online (Sandbox Code Playgroud)

并另外保存其他值,国家和人口如下.所以,我想首先需要从两个csv文件中创建对象'city'.

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"
Run Code Online (Sandbox Code Playgroud)

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

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

ial*_*alm 86

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

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

例:

# 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")
Run Code Online (Sandbox Code Playgroud)

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

  • 默认情况下,@ jabberwocky`load`将对象转储到(全局)环境中.这是一个糟糕的主意.你*想要'readRDS`给你的控件.R的'load`在这里积极推动不良做法. (9认同)
  • 我不知道为什么没有更广泛的推荐/已知.它通常比`save` /`load`更好的解决方案. (3认同)
  • @KonradRudolph 为什么 `saveRDS` 更好?通过“save/load”,您可以使用“save(object, file)”和“newObject &lt;- load(file)”。对于 RDS,您可以使用“saveRDS(object, file)”和“newObject &lt;- readRDS(file)”。它们对我来说看起来很相似,但对于使用“saveRDS”和“readRDS”的一些额外按键。我想我错过了一些东西。 (2认同)
  • @jabberwocky考虑这种情况:假设您将矩阵test保存为save(test,file =“ example.Rdata”)。然后,您稍后将`test`定义为其他内容(例如,`test &lt;-c(1:100)`)。当您执行load(“ example.Rdata”)`时会发生什么?它将替换您新定义的“ test”变量。另一种情况:如果您需要保存在example.rdata中的数据,但又想保留新定义的test变量,该怎么办?您可以轻松地将example.Rdata加载到一个新变量中,比如用load的test3吗? (2认同)
  • 我在`save`中找到的实用程序是将当前环境保存在R中,但为了保存单个R对象,我发现`saveRDS`和`readRDS`要好得多. (2认同)

Sco*_*hie 58

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

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

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

save.image(file="1.RData") 
Run Code Online (Sandbox Code Playgroud)

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

load(file="1.RData")
Run Code Online (Sandbox Code Playgroud)

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

如果要保存一些但不是所有对象,可以使用以下save()功能:

save(city, country, file="1.RData")
Run Code Online (Sandbox Code Playgroud)

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

load(file="1.RData") 
Run Code Online (Sandbox Code Playgroud)

保存单个对象

如果要保存单个对象,可以使用以下saveRDS()功能:

saveRDS(city, file="city.rds")
saveRDS(country, file="country.rds") 
Run Code Online (Sandbox Code Playgroud)

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

city <- readRDS("city.rds")
country <- readRDS("country.rds")
Run Code Online (Sandbox Code Playgroud)

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

city_list <- readRDS("city.rds")
country_vector <- readRDS("country.rds")
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案.带有相应`load()`指令的额外行会使IMO更好. (12认同)