3

1 つの SPSS システム データ ファイル (*.sav) を含む、パスワードで保護された zip アーカイブがあります。そして、私はそれを解凍してその内容をRに読み込みたいと思っていますHmisc::getZip。そして、私はいくつかの異なるアプローチを試みました。

最初の試みは、関数を実行することでした。それが私の場所に*.savファイルを吐き出すことを期待していました。getwd()

getZip(url = '/path/to/data.zip', 
  password = 'foo'
)

しかし、このコマンドは以下を返します:

"unzip -p -P foo data.zip" 
class 
"pipe" 
mode 
"r" 
text 
"text" 
opened 
"closed" 
can read 
"yes" 
can write 
"yes" 

ヘルプ ファイルを読んだ後、getZip()関数はファイル O/I パイプを返すようです。だから私の2番目の試みはgetZip()insideを使うことでしたread.spss()。このような:

data <- read.spss(getZip(url = '/path/to/data.zip', 
  password = 'foo')
)

しかし、愛はありません:

Error in read.spss(getZip(url = '/path/to/data.zip', password = 'foo')) : 
  unable to open file: 'No such file or directory'

最初の試行 " unzip -p -P foo data.zip" からコマンドを取得し、コマンド ラインから (" " を追加して> data.sav) 実行すると、SPSS ファイルが取得されます。だから何かが働いています。私の3番目の試みは、接続を使用することでした:

file_connection <- getZip(url = '/path/to/data.zip', password = 'foo')
open(file_connection, 'rb')
data <- readBin(file_connection, raw())
close(file_connection)

データ オブジェクトをファイルに保存し、関数*.savを使用して R に読み戻すことを望んでいました。read.spss()ただし、データ オブジェクトは SPSS ファイルではありません。

> data
[1] 24

では...*.savパスワードで保護されたzipアーカイブからRにファイルを正常に解凍して読み取るにはどうすればよいですか?

> sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.4 LTS

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

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

other attached packages:
[1] gmailr_0.7.1 rj_2.0.5-1  

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.5         Formula_1.2-1       cluster_2.0.4      
 [4] magrittr_1.5        splines_3.3.0       munsell_0.4.3      
 [7] rj.gd_2.0.0-1       colorspace_1.2-6    lattice_0.20-33    
[10] R6_2.1.2            httr_1.1.0          plyr_1.8.3         
[13] tools_3.3.0         nnet_7.3-12         grid_3.3.0         
[16] data.table_1.9.6    gtable_0.2.0        latticeExtra_0.6-28
[19] openssl_0.9.3       survival_2.39-4     Matrix_1.2-6       
[22] gridExtra_2.2.1     RColorBrewer_1.1-2  ggplot2_2.1.0      
[25] base64enc_0.1-3     acepack_1.3-3.3     rpart_4.1-10       
[28] curl_0.9.7          scales_0.4.0        Hmisc_3.17-4       
[31] jsonlite_0.9.20     chron_2.3-47        foreign_0.8-66  

編集:わかりました。だから私は(それほどエレガントではない)回避策を持っています。ファイルを解凍するために、引数を指定したsystem()呼び出しを使用しています。wait = TRUEこのような:

system(command = paste0('unzip -P foo ', data.zip), 
  wait = TRUE
)

その後、*.savファイルをRに読み込むことができます。しかし、使用方法はまだわかりませんHmisc::getZip()

4

0 に答える 0