O que é o formato de ficheiro RDATA?
.rdata (também escrito como .RData) é o formato de workspace nativo usado pelo ambiente de computação estatística R para salvar e restaurar múltiplos objetos na memória de uma só vez. Ao chamar save() ou save.image() no R, serializa-se qualquer número de objetos nomeados - vetores, data frames, listas, funções e ambientes - em um único arquivo binário, que o load() então restaura diretamente no ambiente de chamada sob seus nomes originais.
O arquivo é construído sobre o protocolo de serialização interna do R. Arquivos não compactados começam com o cabeçalho ASCII RDX3 (ou o mais antigo RDX2) seguido por um payload binário codificado em XDR. Na prática, o R compacta o payload com gzip por padrão, portanto, a maioria dos arquivos .rdata começa com os magic bytes do gzip 1F 8B em vez do cabeçalho de serialização bruto. A compactação Bzip2 e xz também são suportadas.
Duas versões de formato de serialização são de uso comum:
- Versão 2 - padrão antes do R 3.5.0; amplamente compatível com instalações mais antigas do R.
- Versão 3 - padrão desde o R 3.5.0; adiciona metadados nativos de codificação de caracteres e não pode ser lido por versões anteriores do R.
O formato .rds, intimamente relacionado, difere em um aspecto fundamental: ele armazena um único objeto R em vez de uma coleção nomeada, e é carregado com readRDS() para que o chamador possa atribuir-lhe qualquer nome. Para compartilhar dados de forma portátil fora do R, formatos baseados em texto como CSV ou JSON são frequentemente preferidos.
Segurança e proteção
RISCO: MEDIUMArquivos .RData são dados, mas carregar um não é inteiramente passivo: um .RData pode conter objetos R como funções, fórmulas ou promises, e restaurar um workspace malicioso pode, em alguns casos, disparar a execução de código (e o load() sobrescreve silenciosamente objetos com o mesmo nome em seu ambiente). Carregue apenas arquivos .RData de fontes em que você confia, da mesma forma que trataria qualquer arquivo que possa conter executáveis. Os arquivos não são criptografados, portanto, não presuma privacidade. Fora isso, não há risco de malware em conjuntos de dados comuns.
Detalhes do formato
em resumosave() começa com a linha ASCII «RDX3\n» (arquivos mais antigos «RDX2\n»), seguida por um payload serializado codificado em XDR. Se salvo com compactação gzip (o padrão), o arquivo começa com o magic do gzip 1F 8B; bzip2 começa com «BZh», xz começa com «FD 37 7A 58 5A». Payloads não compactados carregam o marcador de serialização «X\n» (58 0A). Portanto, não há uma assinatura única fixa no offset-0 para todos os arquivos .RData.Programas que abrem arquivos RDATA
load('caminho/para/arquivo.RData') para restaurar os objetos; ls() para ver o que foi carregado. load('arquivo.RData'); inspecione os objetos no painel Environment. load('arquivo.RData'); inspecione os objetos no painel Environment. load('arquivo.RData'); inspecione os objetos no painel Environment. load() no RStudio baseado em navegador - sem necessidade de instalação local. Detalhes técnicos
especificação profunda| Tipo de formato | Objetos R serializados binários; também existe um modo de serialização ASCII |
| Ordem dos bytes | Big-endian (ordem de bytes de rede XDR) |
| Compactação padrão | gzip; bzip2 e xz são alternativas opcionais; o modo não compactado está disponível |
| Magic bytes (v3 não compactado) | 52 44 58 33 0A (ASCII «RDX3\n»); arquivos v2 usam 52 44 58 32 0A («RDX2\n») |
| Magic bytes (compactado) | 1F 8B quando compactado com gzip (o padrão); 42 5A 68 para bzip2; FD 37 7A 58 5A para xz |
| Multiplicidade de objetos | Armazena múltiplos objetos R nomeados por arquivo (vetores, data frames, listas, funções, ambientes) |
| Comando de carregamento | `load()` - restaura todos os objetos salvos no ambiente de chamada sob seus nomes originais |
| Comandos de salvamento | `save()` para objetos selecionados; `save.image()` para capturar todo o workspace atual |
| Versões de serialização | v2 (anterior ao R 3.5.0) e v3 (R ≥ 3.5.0); a v3 incorpora metadados nativos de codificação de caracteres; arquivos v3 requerem R 3.5.0 ou posterior |
| Tipo MIME | application/octet-stream (genérico); não oficial: application/x-r-data |
| Criptografia | Nenhuma integrada; workspaces sensíveis devem ser protegidos no nível do SO ou contêiner |
| Verificação de integridade | Nenhum checksum intrínseco; o invólucro de compactação pode detectar corrupção de bits, mas não há hash por objeto |
| Suporte de plataforma | Multiplataforma: Windows, macOS, Linux - qualquer sistema que execute R |
| Tamanho típico do arquivo | De alguns KB a vários GB, dependendo do tamanho e número de objetos salvos |
| Formato irmão de objeto único | `.rds` armazena exatamente um objeto R; carregado com `readRDS()` e renomeado livremente na atribuição |
| Banco de dados de carregamento lento de pacotes | Arquivos `.rdx` (índice) e `.rdb` (dados) juntos formam o banco de dados de carregamento lento usado dentro de pacotes R, compartilhando a mesma camada de serialização |
| Lançado | 1990s (with R; serialization format predates R 1.0, 2000) |
| Versão mais recente | R serialization format version 3 (default since R 3.5.0, 2018) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | cran.r-project.org |
Conversões de RDATA
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos RDATA.
Perguntas frequentes
Como abro um arquivo RData?
load('caminho/para/arquivo.RData'). Isso restaura todos os objetos salvos em sua sessão sob seus nomes originais - execute ls() para vê-los. O RData é binário, portanto, um editor de texto não mostrará conteúdo legível.Qual é a diferença entre .RData e .rds?
save/load) armazena múltiplos objetos nomeados e os coloca de volta sob esses nomes. O .rds (via saveRDS/readRDS) armazena um único objeto que você atribui a qualquer nome ao carregar. Para um único objeto, o .rds costuma ser mais limpo.Como converto RData para CSV?
load('arquivo.RData'), depois write.csv(seuDataFrame, 'saida.csv') para cada data frame que você deseja exportar.Posso abrir um arquivo RData sem o R?
pyreadr do Python pode ler muitos arquivos .RData, mas o R é o caminho confiável, exportando depois para CSV/Excel para outras ferramentas.Por que meu arquivo RData não carrega no R?
É seguro abrir um arquivo RData de outra pessoa?
load() pode sobrescrever seus objetos, portanto, abra apenas arquivos de fontes em que você confia - trate um .RData desconhecido como qualquer arquivo que possa executar código.