2015-06-17 4 views
6

Согласно ответу на this question, вы можете сохранить кадр данных «Foo» в R с функцией сохранения() следующим образом:Как сохранить кадр данных в R

save(foo,file="data.Rda") 

Вот кадр данных " ДФ ":

> str(df) 
'data.frame': 1254 obs. of 2 variables 
$ text : chr "RT @SchmittySays: I love this 1st grade #science teacher from #Duluth http://t.co/HWDYFnIyqV #NSTA15 #AlbertEinstein #inspirat"| __truncated__ "RT @KVernonBHS: @smrtgrls would love Stellar Girls. Empowering female scientists rocks! #NSTA15 http://t.co/1ZU0yjVF67" "RT @leducmills: Leaving #SXSWedu to go straight to #NSTA15. There should be some sort of arbitrary conference-hopper social med"| __truncated__ "RT @KRScienceLady: Congrats to a wonderful colleague who helped #ngss Bcome reality, Stephen Pruitt, Distinguished Service to "| __truncated__ ... 
$ group: Factor w/ 2 levels "narst","nsta": 2 2 2 2 2 2 2 2 2 2 ... 

кажется, сохранить в порядке:

> save(df, file = "~/downloads/df.Rda") 

Но получается только имя объекта сохраненного:

> df1 <- load("~/downloads/df.Rda") 
> str(df1) 
chr "df" 

Я попытался saveRDS() функция, предложенные в другой ответ на тот же вопрос, указанным выше, которые работали хорошо, но я хотел бы знать, почему сохранить() не работает.

+4

Ваша проблема с функцией 'load'. Вместо 'df <- load (" ~/downloads/df.Rda ")', используйте 'load (" ~/downloads/df.Rda ")' – Alex

+3

@Alex имеет это - вам не нужно назначать при выполнении 'load', он просто создаст объект, который вы сохранили в среде' parent.frame() '- в этом случае глобальное рабочее пространство. Причина, по которой вы получаете '' df "' в возвращаемом тексте, состоит в том, что, как говорит '' load', функция возвращает: 'Символьный вектор имен созданных объектов, невидимо. 'Сохраненные данные все равно должны быть загружены в 'df', хотя. – thelatemail

+0

Я вижу, ty для помощи –

ответ

5

Возможно, вы захотите рассмотреть этот вопрос здесь: R data formats: RData, Rda, Rds etc.

При загрузке объекта .rda вы собираетесь загрузить все объекты с их оригинальными именами в глобальную среду. Вы не можете назначать объекты новым именам, используя load, как вы пытались сделать.

Если вы хотите сохранить объекты, которые могут быть загружены с разными именами позже, вы должны использовать формат .rds (saveRDS и readRDS). Если вы хотите сохранить более одного объекта в файле .rds, самым простым решением является поместить их все в список и сохранить только список. Если после чтения .rds вы хотите поместить объекты списка в глобальную среду, вы можете использовать list2env.

Смежные вопросы