Как сохранить файл данных в .RData?

Я хочу сохранить данные в .RData файл.

Например, я хотел бы сохранить в 1.RData два файла csv и некоторую информацию.

Здесь у меня два CSV-файла

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

и дополнительно сохраните другие значения, страну и население следующим образом. Итак, я думаю, мне нужно в первую очередь сделать объекты «city» из двух 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.csv и file_2.csv имеют набор строк и столбцов.

Как я могу создать этот тип RData с файлами и значениями csv?


person user2913161    schedule 14.11.2013    source источник


Ответы (3)


В качестве альтернативы, если вы хотите сохранить отдельные объекты 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")

Но если вы хотите сохранить многие / все свои объекты в своем рабочем пространстве, используйте ответ Манетерана.

person ialm    schedule 14.11.2013
comment
Интересно. Я не знал saveRDS, хотя это тоже базовый R ... Я всегда использовал решение Манетерана. - person cryo111; 14.11.2013
comment
Я не знаю, почему это не так широко рекомендовано / известно. Обычно это гораздо лучшее решение, чем save / load. - person Konrad Rudolph; 28.05.2014
comment
@KonradRudolph Почему saveRDS лучше? С save/load вы используете save(object, file) и newObject <- load(file). С RDS вы используете saveRDS(object, file) и newObject <- readRDS(file). Мне они кажутся похожими, но для нескольких дополнительных нажатий клавиш с использованием saveRDS и readRDS. Я полагаю, я что-то упускаю. - person Dr. Beeblebrox; 23.10.2014
comment
@jabberwocky load по умолчанию сбрасывает объекты в вашу (глобальную) среду. Это ужасная идея. Вам нужен контроль, который дает вам readRDS. R’s load активно продвигает здесь плохие практики. - person Konrad Rudolph; 23.10.2014
comment
@KonradRudolph Опять же, полагаю, я что-то упустил. Я не вижу load очистки окружающей среды. Я создал пример SSCC. Код в комментарии здесь неуклюжий, но вот он: test <- cbind(1:10, 11:20); save(test, file = "example.Rdata"); remove(list = ls()); load("example.Rdata"); test1 <- 1:10; test2 <- 11:20; ls(); ls(envir=.GlobalEnv); load("example.Rdata"); ls(); ls(envir=.GlobalEnv); #Load does not remove objects from environment. ie test1 and test2 are still there. - person Dr. Beeblebrox; 23.10.2014
comment
@jabberwocky Подумайте об этом сценарии: допустим, вы сохраняете свою матрицу test с помощью save(test, file = "example.Rdata"). Затем вы позже определяете test как что-то еще (скажем, test <- c(1:100)). Что происходит, когда вы делаете load("example.Rdata")? Он заменит вашу недавно определенную переменную test. Другой сценарий: что, если вам нужны данные, которые вы сохранили в example.rdata, но вы хотите сохранить только что определенную переменную test. Можете ли вы легко загрузить example.Rdata в новую переменную, скажем test3 с load? - person ialm; 23.10.2014
comment
Утилита, которую я нашел в save, - это сохранить мою текущую среду в R, но для сохранения отдельных объектов R я считаю, что saveRDS и readRDS намного лучше. - person ialm; 23.10.2014

Есть три способа сохранить объекты из сеанса R:

Сохранение всех объектов в сеансе R:

Функция save.image() сохранит все объекты в настоящее время в вашем сеансе R:

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

Затем эти объекты можно загрузить обратно в новый сеанс R с помощью _ 3_ функция:

load(file="1.RData")

Сохранение некоторых объектов в сеансе R:

Если вы хотите сохранить некоторые, но не все объекты, вы можете использовать _ 5_ функция:

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

Опять же, их можно перезагрузить в другой сеанс R с помощью load() функция:

load(file="1.RData") 

Сохранение одного объекта

Если вы хотите сохранить один объект, вы можете использовать saveRDS() функция:

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

Вы можете загрузить их в сеанс R с помощью readRDS() , но вам нужно будет присвоить результат желаемой переменной:

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

Но это также означает, что вы можете дать этим объектам новые имена переменных, если это необходимо (т.е. если эти переменные уже существуют в вашем новом сеансе R, но содержат другие объекты):

city_list <- readRDS("city.rds")
country_vector <- readRDS("country.rds")
person Scott Ritchie    schedule 14.11.2013
comment
Это хороший ответ. Дополнительная строка с соответствующей инструкцией load() улучшила бы ИМО. - person Assad Ebrahim; 13.05.2015

Просто чтобы добавить дополнительную функцию, если она вам понадобится. Вы можете включить переменную в указанное место, например, идентификатор даты.

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

Это было вы всегда можете проверить, когда он был запущен

person Sajjad M    schedule 18.03.2019