我正在尝试并且未能使用tempfile()
从网上发布的.gz文件中获取数据,而无需将存档写入我的硬盘并手动提取所需文件。我正在重新使用以前在类似情况下工作的代码,R可以毫无困难地找到其他临时文件。
这是我正在使用的代码:
temp <- tempfile()
download.file("http://unified-democracy-scores.org/files/20140312/z/uds_summary.csv.gz", temp)
UDS <- read.csv(unz(temp, "uds_summary.csv"), stringsAsFactors = FALSE)
这是它抛出的错误:
Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
cannot open zip file 'C:\Users\Jay\AppData\Local\Temp\RtmpKs4ZWm\file100877485507'
我尝试将download.file()
中的模式设置为其他选项(例如mode="wb"
)无效。同样在该步骤改变方法。如果我将存档下载到我的硬盘驱动器并使用我的代码的第三行中使用的名称手动提取.csv,它会读得很好。
我在这里做错了什么想法?
答案 0 :(得分:1)
使用gzfile
代替unz
:
UDS <- read.csv(gzfile(temp), stringsAsFactors = FALSE)
这给出了输出:
head(UDS)
#> country year cowcode mean sd median pct025
#> 1 United States 1946 2 1.086431 0.2962744 1.072743 0.5424734
#> 2 United States 1947 2 1.094423 0.2989538 1.077987 0.5516301
#> 3 United States 1948 2 1.050040 0.2604016 1.038927 0.5642550
#> 4 United States 1949 2 1.039801 0.2585845 1.031048 0.5628056
#> 5 United States 1950 2 1.084971 0.2449264 1.071610 0.6280569
#> 6 United States 1951 2 1.043591 0.2551857 1.033722 0.5695530
#> pct975
#> 1 1.694063
#> 2 1.719771
#> 3 1.588783
#> 4 1.567912
#> 5 1.589253
#> 6 1.577150