2011-01-07 6 views
13

Мне интересно, можно ли создать ZIP-файл из папок. У меня есть одна папка, и в этих папках есть четыре папки, и там есть разные типы файлов. Теперь я хочу, чтобы эти четыре папки были рекурсивно с их файлами.Создание zip-файла из папок

Я пробовал save() и gzip(), но они не делают то, что я хочу.

У кого-то есть подсказка для меня?

ответ

6

Пакет Rcompression в Омегахате может это сделать. Вот минимальный пример:

library(Rcompression) 
d <- "C:/my_data" 
files <- list.files(d, recursive=TRUE) 
zip("myarchive.zip", files=paste(d, files, sep="/"), altNames=files) 

См ?zip другие примеры.

+0

Спасибо за ваш ответ. Я попробую это. –

+0

Этот пример помог мне в основном в моем случае. Спасибо! –

+2

Используйте 'file.path', а не' paste (..., sep = "/") '. –

1

Вы можете найти подсказки в источниках odfWeave package.

Если вы загрузите библиотеку и введите odfWeave, вы получите источник, который не слишком длинный, и реализует застегивание и распаковку и системные вызовы.

Из theese источников, вы могли бы сделать что-то вроде:

filename = '' # set archive filename 
loc = ''  # set location, if not done before 
setwd(loc) 
zipCmd = paste("zip -r ", filename, " .", sep='') 
system(zipCmd, invisible = TRUE) 

Конечно, застежка-молния должна быть установлена.

+0

Спасибо за ваш ответ. Я попробую это. –

18

Освободить команду tar. Хотя это не zip, сжатый tar-файл так же хорош.

tarfile <- 'newfile.tgz' 
tar(tarfile,'/path/of/dir/to/tar/up',compression='gzip') 
+4

Я забыл упомянуть, что смола также является кросс-платформенной. – Jeff

+3

+1 Я не думал, что это возможно даже в R! –

+0

Спасибо за ваш ответ. Звучит неплохо, но в моем случае мне нужно .zip. Но я это помню :) –

Смежные вопросы