2014-06-10 17 views
5

Utworzyłbym plik tar.gz z R. Ale funkcja tar nie działa. To jest mój przykładowy kod.Jak utworzyć plik tar.gz w R?

writeLines('aaaa', 'tmp.txt') 
tar('tmp.tar.gz', 'tmp.txt', compression = 'gzip') 

Ten kod tworzy plik tmp.tar.gz, ale plik tmp.txt nie jest zawarty w pliku gz.

Czy są jakieś błędy w moim kodzie?

Dzięki za wszelkie sugestie.

uruchomić ten kod w Windows i Linux:

#Windows platform 
sessionInfo() 
R version 3.1.0 (2014-04-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C      
[5] LC_TIME=English_Australia.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_3.1.0 

#Linux platform 
sessionInfo() 
R version 3.1.0 (2014-04-10) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C   LC_TIME=C   LC_COLLATE=C   
[5] LC_MONETARY=C  LC_MESSAGES=C  LC_PAPER=C   LC_NAME=C   
[9] LC_ADDRESS=C   LC_TELEPHONE=C  LC_MEASUREMENT=C  LC_IDENTIFICATION=C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] weaana_0.1.0.3874 abind_1.4-0  reshape2_1.4  ncdf4cf_0.1.0.3698 ncdf4_1.10   
[6] stringr_0.6.2  My_0.1.0.4086  

loaded via a namespace (and not attached): 
[1] Rcpp_0.11.1 plyr_1.8.1 tools_3.1.0 

Odpowiedz

9

Chyba nie ustawiono zmienną środowiskową "tar". Domyślny argument tar() o nazwie tar jest ustalany przez wywołanie Sys.getenv("tar"). Jeśli jest to pusty ciąg, używany jest wewnętrzny kod R tar (nie działa również na moim systemie).

Więc może albo Sys.setenv"tar" zmienna, lub podać nazwę zewnętrznego polecenia tar/ścieżki ręcznie:

tar('tmp.tar.gz', 'tmp.txt', compression = 'gzip', tar="tar") 
+1

Dzięki za odpowiedź. Dostałem pusty ciąg ("") podczas wywoływania Sys.getenv ("tar") pod linuxem. – Bangyou

+1

Dzięki za sugestie. Teraz działa. – Bangyou

+0

Witam, próbowałem ustawić moją zmienną tar za pomocą Sys.setenv (tar = "pathToTarCmd"), wydaje mi się, że działa, ponieważ sprawdzam to za pomocą Sys.getenv ("tar"), które zwracają ciąg null, ale gdy wywołuję polecenie tar jak to robisz, to nie działa, jak mogę to zrobić? – HanniBaL90