作为探索如何在 R 中为 Denver RUG 制作包的一种方式,我决定围绕 datasciencetoolkit API 编写 R 包装器将是一个有趣的小项目。如您所想,基本的 R 工具来自 RCurl 包。我被困在一个看似简单的问题上,我希望这个论坛中的某个人能够指出我正确的方向。基本问题是我似乎无法使用 postForm() 将未键入的字符串作为 curl 中数据选项的一部分传递,即 curl -d "string" "address_to_api"。
例如,从命令行我可能会做
$ curl -d "Tim O'Reilly, Archbishop Huxley" "http://www.datasciencetoolkit.org/text2people"
成功。但是,似乎 postForm() 在将其他参数传递到 POST 请求时需要一个显式键。我查看了 datasciencetoolkit 代码和开发人员文档以寻找可能的密钥,但似乎找不到任何东西。
顺便说一句,通过 GET 请求将输入传递给 DSTK API 的其他部分非常简单。例如,
ip2coordinates <- function(ip) {
api <- "http://www.datasciencetoolkit.org/ip2coordinates/"
result <- getURL(paste(api, URLencode(ip), sep=""))
names(result) <- "ip"
return(result)
}
ip2coordinates('67.169.73.113')
将产生预期的结果。
为了清楚起见,我已经阅读了 DTL 的 omegahat 网站上的 RCurl 文档、带有包的 RCurl 文档以及 curl 手册页。但是,我缺少关于 curl 的一些基本内容(或者可能是 postForm() 函数中的 .opts() ),我似乎无法理解。
在 python 中,我基本上可以使用 httplib.HTTPConnection 发出一个“原始”的 POST 请求——在 R 中有类似的东西吗?我还查看了 httpRequest 包中的 simplePostToHost 函数,它似乎只是锁定了我的 R 会话(它似乎也需要一个密钥)。
FWIW,我在 Mac 10.6.7 上使用 R 2.13.0。
任何帮助深表感谢。如果您有兴趣使用数据科学工具包,所有代码很快就会在 github 上提供。
干杯。