2014-06-10 32 views
5

我會從R創建一個tar.gz文件,但tar函數不起作用。這是我的示例代碼。如何在R中創建一個tar.gz文件?

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

此代碼創建一個tmp.tar.gz,但tmp.txt不包含在gz文件中。

我的代碼中是否有錯誤?

感謝您的任何建議。

我運行這段代碼在Windows和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 

回答

9

我猜你沒有設置"tar"環境變量。 tar()調用tar的默認參數是通過調用Sys.getenv("tar")來設置的。如果它是空字符串,則使用R的內部tar(它也不適用於我的系統)。

所以,您可以將Sys.setenv"tar"變量,或提供外部tar命令/手動路徑的名稱:

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

感謝您的答覆。在linux下調用Sys.getenv(「tar」)時,我得到空字符串(「」)。 – Bangyou

+1

感謝您的建議。它現在有效。 – Bangyou

+0

你好,我試圖用Sys.setenv(tar =「pathToTarCmd」)設置我的tar變量,它似乎工作,因爲我用Sys.getenv(「tar」)檢查它返回非空字符串,但是當我調用tar命令當你這樣做,它不起作用,我怎麼能做到這一點? – HanniBaL90