9

Rを使用してzipファイルをダウンロードして抽出しようとしています。そうすると、エラーメッセージが表示されます。

unzip(temp、list = TRUE)のエラー:'exdir'は存在しません

Stack Overflowの質問に基づくコードを使用しています。Rを使用してzip形式のデータファイルをダウンロードし、データを抽出してインポートします。

簡単な例を挙げます。

# Create a temporary file
temp <- tempfile()

# Download ZIP archive into temporary file
download.file("http://cran.r-project.org/bin/windows/contrib/r-release/ggmap_2.2.zip",temp)

# ZIP is downloaded successfully:

# trying URL 'http://cran.r-project.org/bin/windows/contrib/r-release/ggmap_2.2.zip'
# Content type 'application/zip' length 4533970 bytes (4.3 Mb)
# opened URL
# downloaded 4.3 Mb

# Try to do something with the downloaded file
unzip(temp,list=TRUE)

# Error in unzip(temp, list = TRUE) : 'exdir' does not exist

私がこれまでに試したこと:

  • 一時ファイルに手動でアクセスし、7zipで解凍します。これは問題なく実行できます。ファイルはそこにあり、アクセス可能です。
  • 一時ディレクトリをc:\tempに変更します。この場合も、ファイルは正常にダウンロードされ、7zipでアクセスして解凍できますが、Rがアクセスしようとすると、exdirエラーメッセージがスローされます。

Rバージョン2.15.2

R-Studioバージョン0.97.306

編集:unzipの代わりにunzを使用するとコードは機能しますが、一方が機能し、もう一方が機能しない理由を理解できませんでした。CRANガイダンスから:

  • unzは、zipファイル内の単一ファイル(のみ)を読み取ります。
  • unzipは、zipアーカイブからファイルを抽出するか、zipアーカイブを一覧表示します
4

4 に答える 4

13

Windowsセットアップの場合:パスとしてexdirを指定すると、このエラーが発生しました。私にとっての解決策は、パス名の末尾の/または\\を削除することでした。

これが例で、まだ存在していなかった場合は新しいフォルダが作成されました

locFile <- pathOfMyZipFile
outPath <- "Y:/Folders/MyFolder"
# OR
outPath <- "Y:\\Folders\\MyFolder"

unzip(locFile, exdir=outPath)
于 2016-02-05T18:28:32.030 に答える
4

これは別の方法で現れる可能性があり、ドキュメントでは原因が明確にされていません。exdirを「/」で終わらせることはできません。ターゲットフォルダの名前である必要があります。

たとえば、これは「exdir」で失敗していましたが存在しません:

unzip(temp, overwrite = F, exdir = "data_raw/system-data/")

そして、これはうまくいきました:

unzip(temp, overwrite = F, exdir = "data_raw/system-data")

おそらく、unzipがexdirパスの最後に「/」を見つけると、それは探し続けます。一方、「/」を省略すると、unzipに「見つけました。ここで解凍してください」と表示されます。

于 2016-02-06T01:15:31.487 に答える
2

数年遅れていますが、を使おうとするとこのエラーが発生しますunzip()unzip状態のマニュアルページexdirが指定されている場合は作成されるため、バグのようです。

exdirファイルを抽出するディレクトリ(unzip -dと同等)。必要に応じて作成されます。

私が使用している回避策は、必要なディレクトリを手動で作成することです。

dir.create("directory")
unzip("file-to-unzip.zip", exdir = "directory/")

痛みはありますが、少なくとも私にとってはうまくいくようです。

于 2015-08-17T09:42:05.630 に答える
0

Windows7マシンでR3.2.1を使用しています。

この問題に対処するために私が見つけた方法にはいくつかの手順がありますが、それは私にとってはうまくいきます:

  1. ファイルをダウンロードする場所からのURLの名前を含むベクターを作成します。例:

file_url <-" http://your.file.com/file_name.zip "

  1. download.fileを使用して、ファイルのダウンロード元のURLを指定し(新しく作成したベクターを使用)、その後にzipファイルのファイル名(URL名の最後の部分)を指定します。作業ディレクトリ*にそのまま保存されます。例:

download.file(file_url、 "file_name.zip")

*作業ディレクトリがわからない場合は、getwd()を使用して確認できます。作業ディレクトリを変更する場合は、setwd( "C:users / username / ...")を使用して希望のディレクトリに設定できます。

  1. 「unzip」を使用して、ファイルを作業ディレクトリに解凍します。名前は、exdirを使用して設定します。例:

unzip( "file_name.zip"、exdir = "file_name")

  1. 作業を確認するには、list.filesを使用できます。

list.files( "file_name")

お役に立てれば!

于 2015-08-17T15:32:38.803 に答える