Skip to contents

Persiste un objeto analizar() en RDS con número de esquema. Los datos de entrada no se guardan por omisión. Las funciones de reglas se sustituyen por declaraciones pequeñas: una dependencia funcional se reconstruye al leer sólo si los datos fueron incluidos; una función arbitraria queda desactivada. Así el archivo no serializa entornos de ejecución completos.

Usage

guardar_analisis(
  x,
  archivo,
  incluir_datos = FALSE,
  proteger_datos_personales = TRUE,
  sobrescribir = FALSE,
  comprimir = "xz"
)

leer_analisis(archivo)

Arguments

x

Objeto creado por analizar().

archivo

Ruta del archivo RDS. Una ruta que ya es un directorio se rechaza: el archivo va dentro, con su nombre.

incluir_datos

Si se persiste la copia de los datos conservada por analizar(conservar_datos = TRUE).

proteger_datos_personales

Si se protege toda evidencia derivada.

sobrescribir

Si se permite reemplazar un archivo existente.

comprimir

Compresión admitida por saveRDS(): un lógico, "gzip", "bzip2" o "xz".

Value

guardar_analisis() devuelve la ruta de forma invisible; leer_analisis() devuelve un objeto analisis.

El objeto guardado gana meta$persistencia, que declara qué se guardó y qué no: version_esquema, si los datos viajan (datos_incluidos), si la evidencia salió protegida (evidencia_protegida) y cuántas funciones se sustituyeron por su descripción (funciones_sustituidas). Es el único campo que un objeto leído tiene y el original no: lo que se guarda no es idéntico a lo que se analizó, y esa diferencia se declara en vez de suponerse. Al leer, si hubo funciones sustituidas, advertencias agrega una fila que declara que la propuesta se volvio a derivar sin ellas y que puede no coincidir con la decision original, que se conserva.

Details

La protección de datos personales con evidencia suficiente se vuelve a aplicar antes de escribir. Incluir datos que contienen columnas protegidas exige desactivar expresamente esa protección; una clasificación débil se conserva como información pero no activa esa restricción.

El archivo se escribe con el formato RDS 2, no con el 3 que saveRDS() usa por omisión. El 3 anota la codificación nativa de quien escribe y al leer traduce desde ella el texto que no declara la suya; en Windows esa traducción no falla y cambia los bytes en silencio, así que un análisis guardado bajo un locale y leído bajo otro podía volver con el texto alterado.

Ese formato tiene un costo y conviene saberlo: no conserva la representación compacta de los vectores que R guarda así. Medido, una columna 1:1e6 ocupa 103 bytes con el formato 3 y 2.127.903 con el 2; con incluir_datos = TRUE sobre una tabla con una columna id = seq_len(n), eso son unos 2 MB por cada millón de filas, y a escala la escritura puede exigir materializar en memoria lo que el formato 3 no materializa. Se eligió así porque un archivo más grande es visible y recuperable, y un texto corrompido en silencio no lo es. Quien prefiera la otra relación puede serializar el objeto por su cuenta.

Examples

a <- analizar(datos_administrativos, argumentos_perfil = list(
  analizar_dependencias = FALSE
))
ruta <- tempfile(fileext = ".rds")
guardar_analisis(a, ruta)
b <- leer_analisis(ruta)
unlink(ruta)