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


68

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

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

在这里,我有两个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?

Answers:


92

另外,当您要保存单个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")

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


3
我不知道为什么不那么广泛推荐/知道这一点。通常,它是比save/更好的解决方案load
康拉德·鲁道夫

1
@KonradRudolph为什么saveRDS更好?与save/load您一起使用save(object, file)newObject <- load(file)。使用RDS可以使用saveRDS(object, file)newObject <- readRDS(file)。它们似乎与我相似,但是使用saveRDS和进行了几次额外的击键readRDS。我想我缺少什么。
Beeblebrox博士2014年

10
load默认情况下,@ jabberwocky将对象转储到您的(全局)环境中。那是一个可怕的主意。您想要readRDS给您的控制权。R'sload在这里积极推广不良做法。
康拉德·鲁道夫2014年

2
@jabberwocky想想这样的场景:说你保存你的矩阵,testsave(test, file = "example.Rdata")。然后,您以后将其定义test为其他内容(例如test <- c(1:100))。当您这样做时会发生什么load("example.Rdata")?它将替换您新定义的test变量。另一种情况:如果需要保存在中的数据example.rdata,但想保留新定义的test变量,该怎么办。你可以很容易地加载example.Rdata到一个新的变量,比如test3load
ialm

2
我发现的实用程序save是将当前环境保存在R中,但是我发现saveRDS并保存readRDS了更好的R对象。
ialm 2014年

68

有三种方法可以从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")

12
这是一个很好的答案。在相应的load()说明中多加一行将使它成为更好的IMO。
阿萨德·易卜拉欣

0

仅在需要时添加其他功能。您可以在命名位置中包含一个变量,例如日期标识符

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

这是您始终可以检查其运行时间的方法

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.