当我使用R中的RCurl从办公室的本地数据库中下载包含.nc4文件的.gz文件时,该文件似乎在下载过程中或在R中使用save()函数时被压缩了。
我在使用R程序和命令提示符之间进行了比较。使用命令提示符,我可以下载.gz文件,并使用7zip将其解压缩,而不会出现问题,R中的ncdf4可以读取该文件。假设.gz文件的大小为X MB,而.nc4文件的大小为Y MB。
使用我的R脚本,下载的.gz文件的大小小于X MB,带有.gz文件扩展名。当我使用R系统命令将其解压缩为7zip时,它没有问题地解压缩了文件,但是现在它的大小为X MB,并且与上方的原始.gz文件相同(大小相同)。但是,它现在不再具有.gz文件扩展名。再次解压缩后,它的大小现在为Y MB。但是,R上的ncdf4无法读取它。
命令提示符命令:
#While on sftp server...
get <filename>.gz
#The file is a proper .gz file of X MB size on my host machine
7z.exe e <filename>.gz
#The file is now a .nc4 file of Y MB size
file <- nc_open(<filename>) is successful
R代码
library("RCurl")
url <- paste0("<sftp server>, ".gz")
zippedFile <- paste0(<downloaded file name>, ".gz")
data <- getBinaryURL(url, userpwd = <credentials>, connecttimeout = 60)
save(data, file = zippedFile)
#The file is a proper .gz file of less than X MB size on my host machine
system("\"C:/Program Files/7-Zip/7z.exe\" e <filename>.gz", intern = T)
#The file is now X MB size on my host machine without the .gz extension
system("\"C:/Program Files/7-Zip/7z.exe\" e <filename>", intern = T)
#The file is decompressed successfully into Y MB size on my host
file <- nc_open(<filename>) fails
#Error: Error in R_nc4_open: NetCDF: Unknown file format
我是R的新手,所以对了解R或RCurl如何压缩数据的任何帮助都会很棒!我浏览了无数来源,但没有给出答案。