Quando você salva uma variável em um arquivo de dados R usando save
, ela é salva com o nome que tinha na sessão que a salvou. Mais tarde, quando vou carregá-lo de outra sessão, ele é carregado com o mesmo nome, que o script de carregamento não pode saber. Este nome pode substituir uma variável existente com o mesmo nome na sessão de carregamento. Existe uma maneira de carregar com segurança um objeto de um arquivo de dados em um nome de variável especificado sem risco de sobrepor as variáveis existentes?
Exemplo:
Salvando sessão:
x = 5
save(x, file="x.Rda")
Carregando sessão:
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Como eu quero que funcione:
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
r
variable-names
rdata
Ryan C. Thompson
fonte
fonte
saveRDS
ereadRDS
, correspondentemente, salvar e restaurar todos os atributos do objeto, incluindo aqueles criados por um aplicativo (viaattr
)? Tentei usar essa abordagem em vez desave
eload
, tentando encontrar uma solução alternativa para o meu problema. No entanto, não parece ser o caso, a menos que eu esteja fazendo algo errado: stackoverflow.com/questions/23701195/… .Eu uso o seguinte:
fonte
Você pode criar um novo ambiente, carregar o arquivo .rda nesse ambiente e recuperar o objeto de lá. No entanto, isso impõe algumas restrições: ou você sabe qual é o nome original do seu objeto ou há apenas um objeto salvo no arquivo.
Esta função retorna um objeto carregado de um arquivo .rda fornecido. Se houver mais de um objeto no arquivo, um arbitrário será retornado.
fonte
new.env
realmente necessário? A própria chamada de função não fornece um ambiente temporário?Você também pode tentar algo como:
fonte
Caso alguém queira fazer isso com um arquivo fonte simples, em vez de um arquivo Rdata / RDS / Rda salvo, a solução é muito semelhante à fornecida por @Hong Ooi
Impressões:
E no arquivo de origem separado TestSourceFile.R
Novamente, essa solução só funciona se houver exatamente um arquivo, se houver mais, ela retornará apenas um deles (provavelmente o primeiro, mas isso não é garantido).
fonte
Estou estendendo a resposta de @ricardo para permitir a seleção de uma variável específica se o
.Rdata
arquivo contiver várias variáveis (já que meus créditos são baixos para editar uma resposta). Ele adiciona algumas linhas para ler a entrada do usuário após listar as variáveis contidas no.Rdata
arquivo.fonte
Arquivo Rdata com um objeto
fonte