2011-12-17 11 views
6

Sto provando a caricare un file .rda in r che era un dataframe salvato. Non ricordo il nome di esso però.ottenere il nome di un dataframe dal caricamento di un file .rda in R

ho cercato

a<-load("al.rda") 

che poi non mi permetta di fare qualsiasi cosa con un. Ottengo l'errore

Error:object 'a' not found 

Ho anche cercato di usare il segno =.

Come caricare questo file .rda in modo che possa essere utilizzato?

ho fatto ripartire R con carico ("al.rda) e so ottenere il seguente errore

Error: C stack usage is too close to the limit 
+0

basta fare 'load (" al.rda ")' e fare 'ls()' per verificare quali oggetti R sono stati caricati nell'ambiente globale. – Ramnath

+0

Arrivo alla fine della connessione inutilizzata 3 (al.rda). cosa dovrei cercare qui? – megv

+1

@megv - Un paio di altre cose da provare: 1. Installa una versione precedente di R e prova a caricarla lì - potrebbe essere che il file sia vecchio e le versioni R più recenti abbiano problemi con esso. 2. Prova a caricarlo su Linux. – Tommy

risposta

4

Ho dovuto reinstallare R ... in qualche modo era corrotto. Il semplice comando che mi aspettavo da

load("al.rda") 

finalmente funzionante.

+0

+1 - Sento il tuo dolore! Questo era un brutto ... – Tommy

5

Usa 'attaccare' e poi 'ls' con un argomento nome Qualcosa come:.

attach("al.rda") 
ls("file:al.rda") 

Il file di dati è ora sul vostro percorso di ricerca in posizione 2, molto probabilmente fare:..

search() 
ls(pos=2) 

per l'illuminazione Typing t il nome di qualsiasi oggetto salvato in al.rda ora lo otterrà, a meno che tu non abbia qualcosa nella posizione di percorso di ricerca 1, ma R ti avviserà probabilmente con un messaggio su una cosa che maschera un'altra cosa se c'è.

Tuttavia ora sospetto che non abbiate salvato nulla nel file RData. Due motivi:

  1. Tu dici che non si ottiene un messaggio di errore
  2. carico dice non c'è niente caricato

posso duplicare questa situazione. Se si salva (file = "foo.RData"), si otterrà un file RData vuoto: ciò che probabilmente si è voluto fare è save.image (file = "foo.RData") che salva tutti gli oggetti.

Quanto è grande questo file .rda del tuo? Se è inferiore a 100 byte (i miei file RData vuoti sono lunghi 42 byte), sospetto che sia quello che è successo.

+0

Ricevo il carattere (0) – megv

+0

Sospetto che non ci sia nulla in esso. Vedi modifica sopra ... – Spacedman

+0

la dimensione è 317,888kb – megv

4

La funzione loadfa restituisce l'elenco di variabili che ha caricato. Ho il sospetto che tu abbia effettivamente un errore quando carichi "al.rda". Che cosa produce esattamente R quando si carica?

Esempio di come dovrebbe lavoro:

d <- data.frame(a=11:13, b=letters[1:3]) 
save(d, file='foo.rda') 
a <- load('foo.rda') 
a # prints "d" 

Giusto per essere sicuri, controllare che la funzione load si chiama in realtà è quella originale:

find("load") # should print "package:base" 

EDIT Dal momento che ora ricevi un errore quando carichi il file, probabilmente è corrotto in qualche modo.Prova questo e dire ciò che esso stampa:

file.info("a1.rda") # Prints the file size etc... 
readBin("a1.rda", "raw", 50) # reads first 50 bytes from the file 

senza avere accesso al file, è difficile indagare di più ... Forse si potrebbe condividere il file in qualche modo (http://www.filedropper.com o simile) ?

+0

indovinando i possibili problemi, 'getwd()' e 'list.files()' (o 'load (file.choose())' sono alcuni possibili strumenti utili per la figurazione perché il file potrebbe non caricarsi (se non lo è); * e * assicurandosi che il file sia realmente chiamato 'al.rda' e non' a1.rda' ... –

+0

Questo è il comando che uso> l1 < -load ("al.rda") > l1 Errore: oggetto 'l1' non trovato Inoltre: Messaggio di avviso: chiusura connessione inutilizzata 3 (al.rda) – megv

+0

@megv - cosa ha trovato '(" carica ") 'stampa? – Tommy

0

Io di solito utilizzo il salvataggio per salvare solo un singolo oggetto e quindi utilizzo il seguente metodo di utilità per recuperare quell'oggetto in un nome di variabile dato utilizzando il carico, ma in uno spazio dei nomi temporaneo per evitare di sovrascrivere gli oggetti esistenti. Forse sarà utile anche per gli altri:

load_first_object <- function(fname){ 
    e <- new.env(parent = parent.frame()) 
    load(fname, e) 
    return(e[[ls(e)[1]]]) 
} 

il metodo può ovviamente essere esteso a tornare anche oggetti con nome e liste di oggetti, ma questo semplice versione è per me la più utile.

1

ho avuto un problema simile, ed è stato risolto senza reinstallare R. per esempio facendo

load("al.rda) funziona bene, se lo fai a <- load("al.rda") non funzionerà.

+0

Sì, questo era il mio problema. 'imposta da sola il valore della variabile. – schoon

+0

manca la citazione di fine sopra s/be 'load (" al.rda ")' –

Problemi correlati