1

curlPerform()またはからデータを取得しようとすると、JSON 文字列の文字サイズ制限のように見えますgetURL()。これは再現不可能なコード [1] ですが、問題を明らかにするはずです。

# Note that .base.url is the basic url for the API, q is a query, user 
#  is specified, etc. 
session = getCurlHandle()
curl.opts <- list(userpwd = paste(user, ":", key, sep = ""), 
                  httpheader = "Content-Type: application/json")
request <- paste(.base.url, q, sep = "")
txt <- getURL(url = request, curl = session, .opts = curl.opts, 
              write = basicTextGatherer())

また

r = dynCurlReader()
curlPerform(url = request, writefunction = r$update, curl = session, 
            .opts = curl.opts)

私の推測では、またはテキスト ハンドラー オブジェクトのupdateまたはvalue関数が大きな文字列に問題を抱えていると思います。この例では、約 2 MB の切り捨てられた文字列が返されます。上記のコードは、2 MB 未満のクエリで問題なく動作します。basicTextGatherdynCurlReaderr$value()

コマンドラインから (または R で使用して) 以下を簡単に実行できますがsystem()、その後の分析を R で行っている場合、ディスクへの書き込みは無駄に思える ことに注意してください。

curl -v --header "Content-Type: application/json" --user username:register:passwd https://base.url.for.api/getdata/select+*+from+sometable > stream.json

ここstream.jsonで、約 14MB の json 文字列です。どちらかを使用して文字列を R に読み込むことができます

con <- file(paste(.project.path, "data/stream.json", sep = ""), "r")
string <- readLines(con)

または直接リストする

tmp <- fromJSON(file = paste(.project.path, "data/stream.json", sep = ""))

どんな考えでも大歓迎です。

ライアン

[1] - 再現可能なコードを提供できなくて申し訳ありませんが、私は政府のファイアウォールを扱っています。

4

0 に答える 0