作爲探索如何在R for Denver RUG中創建一個包的一種方法,我決定在datasciencetoolkit API上編寫一個R包裝器將是一個有趣的小項目。基本的R工具來自RCurl包,正如你可能想象的那樣。我被困在一個看似簡單的問題上,我希望這個論壇上的某個人能夠指引我朝着正確的方向發展。基本的問題是,我似乎無法使用postForm()傳遞一個未鍵控的字符串作爲curl中數據選項的一部分,即curl -d「string」「address_to_api」。使用RCurl的POST請求
例如,在命令行中我可能會做
$ 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(或postForm()函數中的.opts())的基本概念,我似乎無法得到它。
在python中,我基本上可以使用httplib.HTTPConnection創建'原始'POST請求 - 類似於R中可用的那樣?我也查看了httpRequest包中的simplePostToHost函數,它似乎鎖定了我的R會話(它似乎也需要一個密鑰)。
FWIW,我在Mac 10.6.7上使用R 2.13.0。
任何幫助,非常感謝。如果您有興趣使用數據科學工具包,所有代碼即將在github上提供。
乾杯。
感謝您的幫助!有沒有任何理由,關鍵是'一個'?我嘗試了'名稱','文本'和一堆其他垃圾。 – rtelmore 2011-04-27 02:24:22
更正:我嘗試在不同的調用中使用「名稱」等。我嘗試過使用,例如postForm(api,string),你需要postForm(api,a = string)。 – rtelmore 2011-04-27 04:43:56
對,你需要提供一個key = value對。 'a'完全是任意的(這只是想到的第一個字母)。其他任何工作都一樣(例如a =「string」,name =「string」等。「a」=「string」將不起作用。) – Noah 2011-04-27 09:19:19