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()