6

1.1 ギガバイトのファイルをダウンロードしようとしていますがhttr、次のエラーが表示されます。

x <- GET( extract.path )
Error in curlPerform(curl = handle$handle, .opts = curl_opts$values) : 
  cannot allocate more space: 1728053248 bytes

私のCドライブには400GBの空き容量があります..

RCurlパッケージでは、使用時にオプションとオプションが表示されますmaxfilesizeが、これらがスルーまたは..に渡されるかどうか/どのように渡されるか、またはこれのために切り替える必要があるかどうかがわかりません..切り替えが必要な場合でも、最大ファイルサイズを大きくするとうまくいきますか?maxfilesize.largegetCurlOptionsConstants()httrconfigset_configRCurl

ここに私のセッション情報があります..

> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] XML_3.96-1.1 httr_0.2    

loaded via a namespace (and not attached):
[1] digest_0.6.0   RCurl_1.95-4.1 stringr_0.6.2  tools_3.0.0   

..そして (時間がかかるため、これはお勧めしません) 私のエラーを再現したい場合は、https://usa.ipums.org/usa-action/samplesにアクセスして、新しい2011 年の 5 年間の acs 抽出を選択し、約 100 の変数を追加して、抽出の準備が整うまで待ちます。次に、最初の 3 行を編集して、以下のコードを実行します。(繰り返しますが、お勧めしません)

your.email <- "email@address.com"
your.password <- "password"
extract.path <- "https://usa.ipums.org/usa-action/downloads/extract_files/some_file.csv.gz"

require(httr)

values <- 
    list(
        "login[email]" = your.email , 
        "login[password]" = your.password , 
        "login[is_for_login]" = 1
    )

POST( "https://usa.ipums.org/usa-action/users/validate_login" , body = values )
GET( "https://usa.ipums.org/usa-action/extract_requests/download" , query = values )

# this line breaks
x <- GET( extract.path )
4

2 に答える 2

1

GETこれを呼び出しhttr:::make_requestて、 で定義された curl オプションを設定しますconfig = list()。ただし、writefunctionオプションは「httr」にハードコードされているようです

opts$writefunction <- getNativeSymbolInfo("R_curl_write_binary_data")$address

おそらく、RCurl を使用して、適切な「書き込み関数」を定義する必要があります。次の解決策@Martin Morgan からダウンロードしたファイルを書き込むための RCurl で C レベルのファイル ハンドルを作成する方法が適しているようです。

于 2013-06-26T04:18:10.260 に答える