使用R和readr

时间:2017-11-03 19:20:12

标签: r

我是R编程的新手。我在mac OS X El Capitan V10.11.6中使用R 3.4.2。

当我尝试从下面的url读取数据时,我遇到了错误。

数据源链接: https://dumps.wikimedia.org/other/pageviews/2017/2017-10/pageviews-20171001-010000.gz

该文件包含四个字段:语言,维基百科页面标题,此页面收到的页面请求数,返回内容的总大小(以字节为单位)。它是由空格分隔的csv文件,没有标题行。

我尝试使用以下代码阅读表格:

df <- read.table("https://dumps.wikimedia.org/other/pageviews/2017/2017-10/pageviews-20171001-010000.gz", sep = " ", stringsAsFactors = FALSE, header = FALSE, encoding = "UTF-8")

我得到的错误是

  

扫描错误(file = file,what = what,sep = sep,quote = quote,dec = dec,:     第1行没有2个元素   另外:警告信息:   在read.table(“https://dumps.wikimedia.org/other/pageviews/2017/2017-10/pageviews-20171001-010000.gz”中,:     第1行似乎包含嵌入的空值

我也尝试使用readr包,但仍然失败了。我使用的代码在

下面
df <- read_delim("https://dumps.wikimedia.org/other/pageviews/2017/2017-10/pageviews-20171001-010000.gz", delim = " ", col_names = FALSE)

BTW,当我用spark scala读取这些数据时,没有问题。

2 个答案:

答案 0 :(得分:0)

library(stringi)
library(tidyverse)

gzfile("pageviews-20171001-010000.gz") %>% 
  readLines(skipNul=TRUE) %>% 
  stri_split_fixed(" ", simplify=TRUE) %>% 
  as_data_frame() -> xmat

xmat

## # A tibble: 4,598,475 x 4
##       V1                                V2    V3    V4
##    <chr>                             <chr> <chr> <chr>
##  1    aa                 Category:Articles     1     0
##  2    aa                  Category:User_aa     1     0
##  3    aa        File:Wikipedia-logo-en.png     2     0
##  4    aa                         Main_Page    35     0
##  5    aa               Special:ActiveUsers     6     0
##  6    aa Special:Contributions/Lars~aawiki     1     0
##  7    aa    Special:Contributions/PipepBot     1     0
##  8    aa                 Special:ListFiles     3     0
##  9    aa                 Special:ListUsers     3     0
## 10    aa                Special:Statistics    10     0
## # ... with 4,598,465 more rows

答案 1 :(得分:0)

适用于我的情况。可能是系统/包版本依赖吗?

library(readr)

df <- read_delim("https://dumps.wikimedia.org/other/pageviews/2017/2017-10/pageviews-20171001-010000.gz", 
                 delim = " ", col_names = FALSE)
df
# A tibble: 4,421,548 x 4
##X1                                X2    X3    X4
##<chr>                             <chr> <int> <int>
##1    aa                 Category:Articles     1     0
##2    aa                  Category:User_aa     1     0
##3    aa        File:Wikipedia-logo-en.png     2     0
##4    aa                         Main_Page    35     0
##5    aa               Special:ActiveUsers     6     0
##6    aa Special:Contributions/Lars~aawiki     1     0
##7    aa    Special:Contributions/PipepBot     1     0
##8    aa                 Special:ListFiles     3     0
##9    aa                 Special:ListUsers     3     0
##10    aa                Special:Statistics    10     0
# ... with 4,421,538 more rows
sessionInfo()
##R version 3.4.2 (2017-09-28)
##Platform: x86_64-pc-linux-gnu (64-bit)
##Running under: Ubuntu 17.10
##
##Matrix products: default
##BLAS: /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
##LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so
##
##locale:
##[1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##[3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##[5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##[7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##[9] LC_ADDRESS=C               LC_TELEPHONE=C            
##[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
##
##attached base packages:
##[1] stats     graphics  grDevices utils     datasets  methods   base