2014-05-08 2 views
0

재현 가능한 연구 패러다임을 채택하려고하지만 Dropbox를 사용하여 Excel을 호스트하는 방법으로 텍스트 데이터 파일의 절반을보기보다는 Excel을 보는 사람들을 만날 수 있습니다. .xlsx 패키지를 사용하여 액세스 할 수있는 파일.보관함 (https :) 위치에서 .xlsx 파일을 다운로드하는 방법

오히려 내가 일하는 것이 다음과 같은 가정 압축 파일 다운로드 및 압축 풀기 같은 :

# Prerequisites 
require("xlsx") 
require("ggplot2") 
require("repmis") 
require("devtools") 
require("RCurl") 
# Downloading data from Dropbox location 


link <- paste0(
    "https://www.dropbox.com/s/", 
    "{THE SHA-1 KEY}", 
    "{THE FILE NAME}" 
) 

url <- getURL(link) 

temp <- tempfile() 
download.file(url, temp) 

을하지만를, 내가 할 Error in download.file(url, temp) : unsupported URL scheme

즉,이 URL을 수락 download.file 대안이 있습니까 계획? 감사합니다. Jon

+0

DropBox가이 특정 종류의 문제에서 어떻게 작동하는지 잘 알고 있지 않습니다. 당신이 인증하지 않거나 어떤 이유로 RCurl이 당신의 URL을 바코드하고있는 문제입니까? 공개적으로 사용할 링크가 있습니까? – TARehman

+0

또한 ...이 경우에는'getURL()'이 실제로 작동하는지 확인 했습니까? 아니면 인증서 문제로 실행 중인지 확인 했습니까? 기본적으로 컬은 인증서를 찾을 위치를 알지 못하므로 거부합니다. CA 확인을 해제하거나 인증서를 가리킬 수 있습니다. – TARehman

+0

비슷한 최근 질문 : http://stackoverflow.com/questions/23531897/read-xls-gdata-from-an-https-url. – GSee

답변

0

URL이 잘못되었습니다. 사용중인 URL은 방문 페이지로 이동합니다. 나는 실제 다운로드 URL이 다르다고 생각하며, 아래를 사용하여 일종의 작업을 할 수 있었다.

실제로 RCurl이나 getURL() 함수를 사용할 필요가 없다고 생각합니다. 이전 배합에서 비교적 중요한 /을 제외한다고 생각합니다.

는 다음과 같은 시도 :

link <- paste("https://dl.dropboxusercontent.com/s", 
       "{THE SHA-1 KEY}", 
       "{THE FILE NAME}", 
       sep="/") 

download.file(url=link,destfile="your.destination.xlsx") 
closeAllConnections() 
+0

을 효과적으로 변경하기위한 옵션들 (download.file.method = "curl")'method = curl'이나'method = wget'이없는 비 Windows 플랫폼에서는'? download.file'이 "https : // URL은 내부 메소드에서 지원하지 않습니다." – GSee

+0

안녕하세요. 감사합니다. SHA 및 파일 이름 부분은 SHA-1 키를 브로드 캐스트하지 못하도록하기위한 것입니다. '/'는 제자리에있었습니다. 문제는 이전과 마찬가지로 '지원되지 않는 URL 스키마'입니다. Windows에서 작동하도록 OSX를 사용하고 있습니다. 나는 내가 다음에 하나에 접근 할 때 일주일 안에 알아낼 것이다. – JonMinton

0

UPDATE :

난 그냥 이론적으로 완벽하게 일을해야 repmis package,에 source_XlsxData 기능이 깨달았다.

아래 기능은 일부는 작동하지만 다른 것은 작동하지 않으며 GET 라인에서 멈추는 것처럼 보입니다. 그래서, 더 나은 해결책은 매우 환영받을 것입니다.


나는 한 걸음 뒤로 물러서서 안전한 (https) URL에서 원시 파일을 다운로드하는 방법을 찾아보기로 결정했습니다. 나는 (도살?) 적응 SOURCE_URL 기능을 DevTools로에 다음과 같은 생산 :

download_file_url <- function (

    url, 
    outfile, 
    ..., sha1 = NULL) 
{ 
    require(RCurl) 
    require(devtools) 
    require(repmis) 
    require(httr) 
    require(digest) 

    stopifnot(is.character(url), length(url) == 1) 
    filetag <- file(outfile, "wb") 
    request <- GET(url) 
    stop_for_status(request) 
    writeBin(content(request, type = "raw"), filetag) 
    close(filetag) 
} 

이 바이너리 파일의 로컬 버전을 생산 작동하는 것 같다 - Excel이 포함되어 있습니다. 더 좋고, 더 깔끔하고, 더 똑똑한 개선이이 자리에 감사드립니다.

관련 문제