Как насчет этого? Я использовал пакет zip для распаковки, но, возможно, базовая распаковка также может сработать.
library(zip)
dir.create(temp <- tempfile())
url<-'https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/0TJX8Y/PZUURT'
download.file(url, paste0(temp, '/PZUURT.zip'), mode = 'wb', exdir = temp)
unzip(paste0(temp, '/PZUURT.zip'), exdir = temp)
Обратите внимание, в частности, я должен был установить mode = 'wb', как на компьютере с Windows.
Затем я увидел, что в распакованном архиве есть папка _MACOSX и папка «Преобразованные сеансы». Предполагая, что мне не нужен материал MACOSX, я сделал следующее, чтобы получить только те файлы, которые мне интересны:
root_folder <- paste0(temp,'/Converted sessions/')
filelist <- list.files(path = root_folder, pattern = '*.txt', recursive = TRUE)
filenames <- basename(filelist)
'filelist' содержит полные пути к каждому текстовому файлу, а 'filenames'есть только каждое имя файла, которое я затем разделю, чтобы получить страну, номер и год:
df <- data.frame(t(sapply(strsplit(filenames, '_'),
function(x) c(x[1], x[2], substr(x[3], 1, 4)))))
colnames(df) <- c('Country', 'Number', 'Year')
Наконец, я могу прочитать текст из каждого файла и вставить его вфрейм данных как новое текстовое поле:
df$Text <- sapply(paste0(root_folder, filelist), function(x) readChar(x, file.info(x)$size))