gpt4 book ai didi

使用 dropbox api 读取 R 中的原始数据以保存为 .RData 文件

转载 作者:行者123 更新时间:2023-12-04 19:11:36 27 4
gpt4 key购买 nike

为 dropbox 制定了 oauth 签名批准系统后,我想下载一个我保存在那里的 .RData 文件,使用 API,和 httrGET功能。

请求成功并返回数据,但它是原始格式,我想知道如何在本地驱动器上再次将其转换为 RData 文件。

这是我到目前为止所做的:...

require(httr)
db.file.name <- "test.RData"
db.app <- oauth_app("db",key="xxxxx", secret="xxxxxxx")
db.sig <- sign_oauth1.0(db.app, token="xxxxxxx", token_secret="xxxxxx")

response <- GET(url=paste0("https://api-content.dropbox.com/1/files/dropbox/",db.file.name),config=c(db.sig,add_headers(Accept="x-dropbox-metadata")))

str(response)
List of 8
$ url : chr "https://api-content.dropbox.com/1/files/dropbox/test.RData"
$ handle :List of 2
..$ handle:Formal class 'CURLHandle' [package "RCurl"] with 1 slots
.. .. ..@ ref:<externalptr>
..$ url :List of 8
.. ..$ scheme : chr "https"
.. ..$ hostname: chr "api-content.dropbox.com"
.. ..$ port : NULL
.. ..$ path : chr ""
.. ..$ query : NULL
.. ..$ params : NULL
.. ..$ username: NULL
.. ..$ password: NULL
.. ..- attr(*, "class")= chr "url"
..- attr(*, "class")= chr "handle"
$ status_code: num 200
$ headers :List of 14
..$ server : chr "nginx/1.2.6"
..$ date : chr "Tue, 29 Jan 2013 10:18:58 GMT"
..$ content-type : chr "application/octet-stream"
..$ content-length : chr "1142953"
..$ connection : chr "keep-alive"
..$ access-control-expose-headers: chr "X-Dropbox-Metadata, Accept-Ranges, Content-Range"
..$ accept-ranges : chr "bytes"
..$ x-dropbox-metadata : chr "{\"revision\": 8398, \"rev\": \"20ce0573b0e8\", \"thumb_exists\": false, \"bytes\": 1142953, \"modified\": \"Thu, 24 Jan 2013 2"| __truncated__
..$ etag : chr "8398n"
..$ pragma : chr "public"
..$ cache-control : chr "max-age=0"
..$ access-control-allow-origin : chr "*"
..$ status : chr "200"
..$ statusmessage : chr "OK"
..- attr(*, "class")= chr [1:2] "insensitive" "list"
$ cookies : list()
$ content : raw [1:1142953] 1f 8b 08 00 ...
$ times : Named num [1:6] 0 0.4 0.518 0.879 1.898 ...
..- attr(*, "names")= chr [1:6] "redirect" "namelookup" "connect" "pretransfer" ...
$ config :List of 1
..$ httpheader: Named chr [1:2] "x-dropbox-metadata" "OAuth oauth_consumer_key=\"xxxxxx\", oauth_nonce=\"xxxxxxxx\", oauth_signature=\"xxxxxxxxxxxxxx\", o"| __truncated__
.. ..- attr(*, "names")= chr [1:2] "Accept" "Authorization"
..- attr(*, "class")= chr "config"
- attr(*, "class")= chr "response"


raw.content.of.file <- content(response)
head(raw.content.of.file)
[1] 1f 8b 08 00 00 00

基本上我想以某种方式保存 raw.content.of.file对象放入名为 downloaded.RData 的文件中,应该与 test.RData 相同或者失败至少能够加载 test.RData 中的对象进入我的全局环境。

最佳答案

您可以使用 writeBin将二进制响应内容写入 Rda文件。这是一个完整的工作示例:

library(httr)
test <- 1:10
save(test, file="~/Dropbox/test.Rda")
response <- GET(url="https://dl.dropbox.com/s/9rjbjwqxid7yj53/test.Rda?dl=1")
writeBin(response$content, "test2.Rda")
rm(test)
load("test2.Rda")
test
[1] 1 2 3 4 5 6 7 8 9 10

如果您不想将二进制数据保存到文件中,还有一种更简单的方法。你可以直接做:
rm(test)
load(rawConnection(response$content))
test
[1] 1 2 3 4 5 6 7 8 9 10

关于使用 dropbox api 读取 R 中的原始数据以保存为 .RData 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14580850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com