2015-06-17 20 views
6

Secondo la risposta a this question, è possibile salvare un frame di dati "pippo" in R con la funzione save() come segue:Come salvare un frame di dati in R

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

Ecco data frame " df ":

> 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 ... 

sembra di risparmiare fino:

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

Ma si scopre solo il nome dell'oggetto salvato:

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

Ho provato il saveRDS() la funzione suggerito in un'altra risposta alla stessa domanda di cui sopra, che funzionava bene, ma mi piacerebbe sapere perché save() non funziona.

+4

il tuo problema è con la funzione 'load'. Invece di 'df <- load (" ~/downloads/df.Rda ")', usa 'load (" ~/downloads/df.Rda ")' – Alex

+3

@Alex ce l'ha - non devi assegnarlo quando lo fai 'carica', creerà solo l'oggetto che hai salvato nell'ambiente' parent.frame() '- in questo caso lo spazio di lavoro globale. Il motivo per cui si ottiene '" df "' nel testo restituito è perché, come dice '? Load', la funzione restituisce:' Un vettore carattere dei nomi degli oggetti creati, invisibilmente. I dati salvati dovrebbero essere stati caricati in 'df' però. – thelatemail

+0

Vedo, per l'aiuto –

risposta

5

Si potrebbe dare un'occhiata a questa domanda qui: R data formats: RData, Rda, Rds etc.

Quando si carica un oggetto .rda, si caricheranno tutti gli oggetti con i loro nomi originali nell'ambiente globale. Non è possibile assegnare oggetti a nuovi nomi usando load come si è tentato di fare.

Se si desidera salvare oggetti che possono essere caricati con nomi diversi successivamente, è necessario utilizzare il formato .rds (saveRDS e readRDS). Se vuoi salvare più di un oggetto in un file .rds, la soluzione più semplice è metterli tutti in un elenco e salvare solo l'elenco. Se dopo aver letto lo .rds si desidera inserire gli oggetti della lista nell'ambiente globale, è possibile utilizzare list2env.

Problemi correlati