小编Dan*_*Tan的帖子

R:解压缩大型压缩 .csv 会产生“zip 文件已损坏”警告

我正在从联合国粮农组织下载一个 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 大小是否有可能是此错误的根源?如果是这样,解决方法是什么?

csv r unzip

7
推荐指数
1
解决办法
2645
查看次数

R reprex 没有为非常高的图渲染正确的 ggplot 输出

当使用 创建非常高的水平条形图时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 版本中消失了。这里发生了什么?

r ggplot2 reprex

3
推荐指数
1
解决办法
183
查看次数

标签 统计

r ×2

csv ×1

ggplot2 ×1

reprex ×1

unzip ×1