Twitterの@EZGraphsは、次のように書いています。
私も今日これをやろうとしましたが、手動でzipファイルをダウンロードするだけになりました。
私は次のようなことを試しました:
fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")
遠く離れているような気がします。何かご意見は?
Twitterの@EZGraphsは、次のように書いています。
私も今日これをやろうとしましたが、手動でzipファイルをダウンロードするだけになりました。
私は次のようなことを試しました:
fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")
遠く離れているような気がします。何かご意見は?
回答:
Zipアーカイブは、実際にはコンテンツメタデータなどを備えた「ファイルシステム」です。詳細help(unzip)
については、を参照してください。上でスケッチしたことを行うには、
tempfile()
)download.file()
ファイルを一時ファイルにフェッチするために使用します。ファイルunz()
tempからターゲットファイルを抽出するために使用します。ファイルunlink()
コードでは(基本的な例に感謝しますが、これはより簡単です)のようになります
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)
圧縮(.z
)またはgzip圧縮(.gz
)またはbzip2ed(.bz2
)ファイルは単なるファイルであり、接続から直接読み取ることができます。だから、代わりにそれを使用するようにデータプロバイダーを取得してください:)
.z
アーカイブからデータを抽出する方法について詳しく教えていただけませんか?でURL接続から読み取ることができますreadBin(url(x, "rb"), 'raw', 99999999)
が、含まれているデータをどのように抽出しますか?uncompress
CRANから削除されたパッケージは、 -ベースRで、この可能です(もしそうなら、それは* nixシステムに制限されていますか?)?必要に応じて、新しい質問として投稿してください。
help(gzfile)
-特許の有効期限が切れているため、gzipプロトコルで.zファイルの圧縮が解除される可能性があると考えていました。そうでないかもしれません。とにかく.zを使うのは誰ですか?1980年代に呼ばれた、彼らは彼らの圧縮を戻したいと思っている;-)
readRDS()
(少なくとも私にとって)動作しません。私が知ることができることから、ファイルは、で読み取ることができる一種のファイルである必要がありますread.table()
。
念のため、Dirkの回答をコードに変換してみました:-P
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
con <- unz(temp, "a1.dat")
data <- matrix(scan(con),ncol=4,byrow=TRUE)
unlink(temp)
scan()
。read.table()
接続でet alを直接使用できます。私の編集した回答を参照してください
http://cran.r-project.org/web/packages/downloader/index.htmlにある CRANパッケージ「ダウンローダー」を使用しました。はるかに簡単です。
download(url, dest="dataset.zip", mode="wb")
unzip ("dataset.zip", exdir = "./")
Mac(およびLinuxを想定)の場合...
zipアーカイブに単一のファイルが含まれている場合は、パッケージfunzip
と組み合わせてbashコマンドを使用できます。fread
data.table
library(data.table)
dt <- fread("curl http://www.newcl.org/data/zipfiles/a1.zip | funzip")
アーカイブに複数のファイルが含まれている場合は、tar
代わりにを使用して、特定のファイルをstdoutに抽出できます。
dt <- fread("curl http://www.newcl.org/data/zipfiles/a1.zip | tar -xf- --to-stdout *a1.dat")
File is empty:
read.table
関数で読み込むことができないファイルに対して機能する例を以下に示します。この例では、.xlsファイルを読み取ります。
url <-"https://www1.toronto.ca/City_Of_Toronto/Information_Technology/Open_Data/Data_Sets/Assets/Files/fire_stns.zip"
temp <- tempfile()
temp2 <- tempfile()
download.file(url, temp)
unzip(zipfile = temp, exdir = temp2)
data <- read_xls(file.path(temp2, "fire station x_y.xls"))
unlink(c(temp, temp2))
data.tableを使用してこれを行うには、次のように動作することがわかりました。残念ながら、このリンクは機能しなくなったため、別のデータセットのリンクを使用しました。
library(data.table)
temp <- tempfile()
download.file("https://www.bls.gov/tus/special.requests/atusact_0315.zip", temp)
timeUse <- fread(unzip(temp, files = "atusact_0315.dat"))
rm(temp)
bashスクリプトをfread
に渡すことができるので、これが1行で可能であることはわかっていますが、.zipファイルをダウンロードし、そこから単一のファイルを抽出して渡す方法がわかりませんfread
。