gpt4 book ai didi

R:读取压缩的二进制文件

转载 作者:行者123 更新时间:2023-12-04 12:49:29 26 4
gpt4 key购买 nike

我正在尝试使用 R 解析一些在线天气数据。该数据是一个已被 gzip 压缩的二进制文件。一个示例文件是:
ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz
如果我将文件下载到我的计算机并手动解压缩它,我可以轻松地执行以下操作:

  myFile <- ( "/tmp/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101" )
to.read = file( myFile, "rb")
myPoints <- readBin(to.read, real(), n=1e6, size = 4, endian = "little")

我更喜欢做的是自动下载/解压缩以及读取。所以我认为这会像以下一样简单:
p <- gzcon( url( "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz" ) )
myPoints <- readBin(p, real(), n=1e6, size = 4, endian = "little")

这似乎很有效,但在手动步骤中,向量 myPoints长度为 518400,这是准确的。但是,如果 R 像第二个示例中那样处理下载和读取,则每次运行代码时都会得到不同的长度向量。严重地。我什么都不抽。我发誓。我多次运行它,每次向量都是不同的长度,总是小于预期的 518400。

我还尝试使用以下方法让 R 下载 gzip 文件:
temp <- tempfile()
myFile <- download.file("ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz",temp)

我发现这通常会返回关于文件不是预期大小的警告。像下面这样:
Warning message:
In download.file("ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz", :
downloaded length 162176 != reported length 179058

您可以提出任何可以帮助我解决此问题的提示吗?

-J

最佳答案

尝试这个:

R> remfname <- "ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz"
R> locfname <- "/tmp/data.gz"
R> download.file(remfname, locfname)
trying URL 'ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/V1.0/2005/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20050101.gz'
ftp data connection made, file length 179058 bytes
opened URL
==================================================
downloaded 174 Kb

R> con <- gzcon(file(locfname, "rb"))
R> myPoints <- readBin(con, real(), n=1e6, size = 4, endian = "little")
R> close(con)
R> str(myPoints)
num [1:518400] 0 0 0 0 0 0 0 0 0 0 ...
R>

关于R:读取压缩的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com