Skip to contents

A zip published on Dataverse is often mostly material a reader does not need: stimuli, images, or videos alongside the few data files. Dataverse serves its per-file download URLs with byte-range support (verified 2026-08-14 against demo.dataverse.org), and every member of a zip is compressed on its own, so individual members can be pulled out of the archive while the rest is never transferred (see .zip_member_fetch(), shared with the identical Zenodo path).

Usage

.dataverse_zip_members(
  url,
  dest,
  keep_types = c("data", "documentation"),
  max_file_size = 10,
  size = NULL
)

Arguments

url

the file's download URL (/api/access/datafile/<id>)

dest

directory to write the extracted members into

keep_types

file categories worth extracting, as data_classify_files() names them; the default keeps data and documentation and skips materials, matching zip_decision()

max_file_size

largest member to extract (in MB), applied per member exactly as the dataset-level cap is applied per file

size

the zip's size in bytes as Dataverse lists it (filesize), or NULL. Passed on to zip_peek() so it does not have to send a HEAD request to learn it.

Value

a data frame with one row per extracted member (name, path, size, ok), or NULL when the archive could not be listed and the caller should download it whole instead

Details

As with Zenodo, this is not possible for every archive: .7z, .rar and .tar.gz compress all their files as one stream, so nothing inside can be read without decompressing everything before it. Both cases fall back to downloading the archive whole.