我正在从联合国粮农组织下载一个 78MB 的 zip 文件,其中包含一个 2.66GB 的 csv。我可以使用 winzip 从文件夹中解压缩下载的文件,但无法unzip()在 R 中使用解压缩文件:
警告 - 下载 78MB!
url <- "http://fenixservices.fao.org/faostat/static/bulkdownloads/FoodBalanceSheets_E_All_Data_(Normalized).zip"
path <- file.path(getwd(),"/zipped_data.zip")
download.file(url, path, mode = "wb")
unzipped_data <- unzip(path)
Run Code Online (Sandbox Code Playgroud)
这会导致警告并且无法解压缩文件:
警告信息
在 unzip(path) 中:zip 文件已损坏
在?unzip文档中我看到
“它确实对 bzip2 压缩和 > 2GB zip 文件有一些支持(但不支持 zip 文件中包含的 >= 4GB 文件预压缩:像许多 unzip 版本一样,它可能会截断这些文件,在 R 的情况下,如果可能的话会发出警告)”
这让我相信unzip()应该处理我的文件,但同样的过程已成功下载、解压缩并从FAOstat 读取多个其他较小的表格。我的 csv 大小是否有可能是此错误的根源?如果是这样,解决方法是什么?
当使用 创建非常高的水平条形图时ggplot2,使用该包呈现的图reprex会截断一些数据,而轴标签仍保留在正确的位置。这与相同代码的 ggplot 输出不同。
reprex输出:
library(babynames)
library(dplyr)
library(ggplot2)
data("babynames")
bn <- babynames %>%
filter(year == 2015) %>%
arrange(-n) %>%
head(400) %>%
mutate(highlight = ifelse(n>12000, TRUE, FALSE)) %>%
arrange(name)
breaks <- bn %>% filter(highlight == TRUE) %>% pull(name)
ggplot(bn, aes(x=name, y=n, fill=highlight)) +
geom_col() +
scale_x_discrete(breaks = breaks)+
coord_flip() +
theme_classic()
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.2.1)于 2018-09-19 创建
用于ggsave()保存 png 并将其上传到 stackoverflow:
ggsave("long_example.png",
width = 4,
height = 6,
dpi=200)
Run Code Online (Sandbox Code Playgroud)
在该ggsave()版本中,阿比盖尔的突出显示栏正确显示,而底部的几个栏(包括阿比盖尔的栏)在 reprex 版本中消失了。这里发生了什么?