Jako sposób na zbadanie, w jaki sposób utworzyć pakiet w R dla Denver RUG, zdecydowałem, że byłoby zabawnym małym projektem napisanie wrapperu R wokół interfejsu API datasciencetoolkit. Podstawowe narzędzia R pochodzą z pakietu RCurl, jak można sobie wyobrazić. Utknąłem na pozornie prostym problemie i mam nadzieję, że ktoś na tym forum mógłby wskazać mi właściwy kierunek. Podstawowy problem polega na tym, że nie mogę użyć funkcji postForm() do przekazania nie-kluczowego ciągu jako części opcji danych w curl, tj. Curl -d "string" "address_to_api".Żądanie POST za pomocą RCurl
Na przykład z wiersza poleceń mogę zrobić
$ curl -d "Tim O'Reilly, Archbishop Huxley" "http://www.datasciencetoolkit.org/text2people"
z sukcesem. Wydaje się jednak, że funkcja postForm() wymaga jawnego klucza podczas przekazywania dodatkowych argumentów do żądania POST. Przejrzałem kod datasciencetoolkit i dokumentację programisty pod kątem możliwego klucza, ale nie mogę niczego znaleźć.
Na marginesie bardzo proste jest przekazywanie danych wejściowych za pośrednictwem żądania GET do innych części interfejsu API DSTK. Na przykład:
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')
da oczekiwane rezultaty.
Dla jasności, przeczytałem dokumenty RCurl na stronie omegahat DTL, dokumenty RCurl z pakietem i stronę podręcznika. Jednak brakuje mi czegoś podstawowego w odniesieniu do curl (lub być może .opts() w funkcji postForm()) i nie mogę tego uzyskać.
W python, mogłem zasadniczo zrobić "surowe" żądanie POST za pomocą httplib.HTTPConnection - jest coś takiego jak to dostępne w R? Spojrzałem również na funkcję simplePostToHost w pakiecie httpRequest i wydawało się, że blokuje ona moją sesję R (wydaje się, że wymaga ona również klucza).
FWIW, używam wersji 2.13.0 na komputerze Mac 10.6.7.
Każda pomoc jest doceniana. Cały kod wkrótce będzie dostępny na github, jeśli chcesz się bawić z zestawem narzędzi do nauki danych.
Pozdrawiam.
Dzięki za pomoc! Czy jest jakiś powód, że kluczem jest "a"? Próbowałem "imię", "tekst" i kilka innych bzdur. – rtelmore
Korekta: próbowałem używać "name" itp. W innym wywołaniu. Próbowałem użyć, np. postForm (api, string) i potrzebujesz postForm (api, a = string). – rtelmore
W prawo, musisz podać parę klucz = wartość. "a" było całkowicie arbitralne (to tylko pierwsza litera, która przyszła mi do głowy). Dowolny z tych innych działa równie dobrze (jak a = "string", name = "string", itp. "A" = "string" nie zadziała.) – Noah