2017-10-08 20 views
0

open-plaques-all-2017-06-19.rar에 압축 된 파일을 다운로드하려고했지만 R로 구현하지 못했습니다.웹 사이트에서 직접 file.rar을 읽는 방법 R

temp <- tempfile() 

download.file("https://github.com/tuyenhavan/Statistics/blob/master/open-plaques-all-2017-06-19.rar", temp) 

df<- fread(unzip(temp, files = "open-plaques-all-2017-06-19.csv")) 
head(df) 

답변

1

아래에있는 내 코드는 내가 RAR-아카이브를 추출하는 R 라이브러리가 있는지 알아,하지만 당신이 unrar, unar, p7zip이나 뭐 비슷한 당신이 시스템 호출을 통해 호출 할 수 있습니다 설치하고있는 경우가없는 파일을 추출합니다.
또한 원시 데이터 (HTML 코드 아님)를 가져 오기 위해 URL 끝에 ?raw=true 태그를 지정해야합니다.

이것은 Mac에서는 p7zip 또는 unar입니다. 다른 유틸리티 및 시스템에서는 다른 구문이 필요할 수 있습니다.

temp <- tempfile() 

download.file(paste0("https://github.com/tuyenhavan/Statistics/blob/master/", 
        "open-plaques-all-2017-06-19.rar?raw=true"), temp) 

#list all csv-files in current working directory 
csv_files <- list.files(pattern="\\.csv") 

#extract RAR to current working directory using p7zip 
system(paste("7z x", temp, paste0("-o", getwd()))) 

#extract RAR to current working directory using unar 
system(paste("unar", "-f", "-o", shQuote(getwd()), shQuote(temp))) 

#find the name of the extracted csv file 
csv_new <- setdiff(list.files(pattern="\\.csv"), csv_files) 

#read in the csv as a data.frame 
csv.dtf <- read.csv(csv_new) 

직접 CSV로 읽을 수도 있지만 상당히 느립니다.

당신이 필요합니다 이러한 각각의 플랫폼/PKG 관리자를위한
csv <- system(paste("7z x -so", temp), intern=TRUE) 
csv.dtf <- read.csv(text=csv) 
2

:

  • 뎁 : libarchive-DEV (데비안, 우분투 등)
  • RPM : libarchive-(STABLE) (페도라, CentOS는, RHEL)
  • CSW : libarchive_dev (솔라리스)
  • 양조 : libarchive (맥 OSX)

Windows 사용자는 미리 컴파일 된 바이너리를 자동으로 다운로드합니다.

는 다음을 수행하십시오

devtools::install_github("jimhester/archive") 

여기에 하나 개의 워크 플로우입니다. 지정한 URL이 올바르지 않거나 유효하지 않습니다. 실제 파일로 이동하려면 "원시"URL을 사용해야합니다.

library(archive) 

tf1 <- tempfile(fileext = ".rar") 
download.file("https://github.com/tuyenhavan/Statistics/blob/master/open-plaques-all-2017-06-19.rar?raw=true", tf1) 

tf2 <- tempfile() 
archive_extract(tf1, tf2) 

list.files(tf2) 
## [1] "open-plaques-all-2017-06-19.csv" 

file.size(file.path(tf2, list.files(tf2))) 
## [1] 26942816 

xdf <- readr::read_csv(file.path(tf2, list.files(tf2))) 
dplyr::glimpse(xdf) 
## Observations: 38,436 
## Variables: 27 
## $ id      <int> 29923, 42945, 42944, 42943, 42942, 42941, 42940, ... 
## $ title     <chr> "Jon Pertwee blue plaque", "Apsley Cherry-Garrard... 
## $ inscription   <chr> "Jon Pertwee 1919-1996 Doctor Who 1970-1974", "Ap... 
## $ latitude    <dbl> NA, NA, NA, NA, NA, NA, 54.14910, 45.76330, NA, 4... 
## $ longitude    <dbl> NA, NA, NA, NA, NA, NA, -4.46938, 4.83157, NA, 4.... 
## $ country    <chr> "United Kingdom", "United Kingdom", "United Kingd... 
## $ area     <chr> "London", "Bedford", "Harlow", "Bozen", "Adro", "... 
## $ address    <chr> "BBC Television Centre", "Lansdowne Road", "The W... 
## $ erected    <int> NA, NA, NA, NA, NA, 2016, NA, NA, NA, NA, NA, NA,... 
## $ main_photo    <chr> NA, "https://commons.wikimedia.org/wiki/Special:F... 
## $ colour     <chr> "blue", "blue", "blue", "brass", "brass", "brass"... 
## $ organisations   <chr> "[]", "[]", "[\"Harlow Civic Society\"]", "[\"Gun... 
## $ language    <chr> "English", "English", "English", "Italian", "Ital... 
## $ series     <chr> NA, NA, NA, "Stolpersteine Italiano", "Stolperste... 
## $ series_ref    <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N... 
## $ `geolocated?`   <chr> "false", "false", "false", "false", "false", "fal... 
## $ `photographed?`  <chr> "false", "true", "false", "true", "true", "true",... 
## $ number_of_subjects  <int> 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0... 
## $ lead_subject_name  <chr> "Jon Pertwee", "Apsley Cherry-Garrard", NA, NA, "... 
## $ lead_subject_born_in <int> 1919, 1886, NA, NA, 1911, 1913, NA, 1888, 1832, 1... 
## $ lead_subject_died_in <int> 1996, 1959, NA, NA, 1945, 1945, NA, 1967, 1898, 1... 
## $ lead_subject_type  <chr> "man", "man", NA, NA, "man", "man", NA, "man", "m... 
## $ lead_subject_roles  <chr> "[\"Doctor Who\", \"actor\", \"entertainer\", \"t... 
## $ lead_subject_wikipedia <chr> "https://en.wikipedia.org/wiki/Jon_Pertwee", "htt... 
## $ lead_subject_dbpedia <chr> "http://dbpedia.org/resource/Jon_Pertwee", "http:... 
## $ lead_subject_image  <chr> "https://commons.wikimedia.org/wiki/Special:FileP... 
## $ subjects    <chr> "[\"Jon Pertwee|(1919-1996)|man|Doctor Who, actor... 

unlink()tf1을 보내고에서 파일을 복사 고려 tf2 어딘가에 더 영구적 인 다음 unlink() 작업이 완료된 후 정리 tf2을 보내고.