GenderGuesser

An R package for using the genderize.io API to guess the gender of names.
git clone https://git.eamoncaddigan.net/GenderGuesser.git
Log | Files | Refs | README | LICENSE

commit 6f752880ed78071924334d69845eed15e8c24d11
parent 63c2ca7b47a596908e410b60709ab05739af945c
Author: eamoncaddigan <eamon.caddigan@gmail.com>
Date:   Sun,  9 Aug 2015 00:27:01 -0400

Okay, so building this updated httr which broke things. But now they're fixed so that's cool. Maybe this works now? Need to test a lot.

Diffstat:
MNAMESPACE | 4+++-
MR/guessGender.R | 20+++++++++++---------
Aman/checkLanguageCountryCodes.Rd | 13+++++++++++++
Aman/getListElement.Rd | 14++++++++++++++
Aman/guessGender.Rd | 26++++++++++++++++++++++++++
Aman/lookupNameVector.Rd | 25+++++++++++++++++++++++++
6 files changed, 92 insertions(+), 10 deletions(-)

diff --git a/NAMESPACE b/NAMESPACE @@ -1 +1,3 @@ -exportPattern("^[^\\.]") +# Generated by roxygen2 (4.1.1): do not edit by hand + +export(guessGender) diff --git a/R/guessGender.R b/R/guessGender.R @@ -18,7 +18,7 @@ checkLanguageCountryCodes <- function(countryCode, languageCode) { #' is requested, otherwise returns the element itself. #' @keywords internal getListElement <- function(listName, elementName) { - if (match(elementName, listName, nomatch = 0) > 0) { + if (match(elementName, names(listName), nomatch = 0) > 0) { listElement <- listName[[elementName]] } else { listElement <- NA @@ -58,19 +58,21 @@ lookupNameVector <- function(nameVector, countryCode = NA, languageCode = NA, ap } # Run it! - queryResult <- httr::GET("https://api.genderize.io", query = query) + # XXX - setting ssl_verifypeer to FALSE is probably really bad. Whatev. + queryResult <- httr::GET("https://api.genderize.io", query = query, + httr::config(ssl_verifypeer = FALSE)) if (httr::status_code(queryResult) == 200) { - responseDF <- jsonlite::fromJSON(httr::content(queryResult, as="text")) + responseFromJSON <- jsonlite::fromJSON(httr::content(queryResult, as="text")) # Make sure this is a data.frame with the correct columns. I bet fromJSON # can do this for me but I don't know how. This code works whether fromJSON # returned a list (the response to one name) or a data.frame (the response # to several). - responseDF <- data.frame(name = getListElement(responseDF, "name"), - gender = getListElement(responseDF, "gender"), - country_id = getListElement(responseDF, "country_id"), - language_id = getListElement(responseDF, "language_id"), - probability = getListElement(responseDF, "probability"), - count = getListElement(responseDF, "count"), + responseDF <- data.frame(name = getListElement(responseFromJSON, "name"), + gender = getListElement(responseFromJSON, "gender"), + country_id = getListElement(responseFromJSON, "country_id"), + language_id = getListElement(responseFromJSON, "language_id"), + probability = getListElement(responseFromJSON, "probability"), + count = getListElement(responseFromJSON, "count"), stringsAsFactors = FALSE) } else { diff --git a/man/checkLanguageCountryCodes.Rd b/man/checkLanguageCountryCodes.Rd @@ -0,0 +1,13 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/guessGender.R +\name{checkLanguageCountryCodes} +\alias{checkLanguageCountryCodes} +\title{Check country and language code.} +\usage{ +checkLanguageCountryCodes(countryCode, languageCode) +} +\description{ +Makes sure that no more than one of countryCode or languageCode is *not* NA + (i.e., they can both be NA, or one can be NA). +} + diff --git a/man/getListElement.Rd b/man/getListElement.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/guessGender.R +\name{getListElement} +\alias{getListElement} +\title{Get an element from a list} +\usage{ +getListElement(listName, elementName) +} +\description{ +Helper function that returns NA instead of NULL when a missing list element +is requested, otherwise returns the element itself. +} +\keyword{internal} + diff --git a/man/guessGender.Rd b/man/guessGender.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/guessGender.R +\name{guessGender} +\alias{guessGender} +\title{Guess names' genders} +\usage{ +guessGender(nameVector, countryCode = NA, languageCode = NA, apiKey = NA) +} +\arguments{ +\item{nameVector}{A vector containing one or more names to look up.} + +\item{countryCode}{An optional ISO 3166-1 alpha-2 country code.} + +\item{languageCode}{An optional ISO 639-1 language code. Only one of +countryCode or languageCode can be specified.} + +\item{apiKey}{An optional API key for genderize.io.} +} +\description{ +This function uses the genderize.io API to supply estimates of the gender one +or more names. +} +\examples{ +guessGender(c("Eamon", "Sean"), countryCode = "US") +} + diff --git a/man/lookupNameVector.Rd b/man/lookupNameVector.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/guessGender.R +\name{lookupNameVector} +\alias{lookupNameVector} +\title{Look up a vector of names.} +\usage{ +lookupNameVector(nameVector, countryCode = NA, languageCode = NA, + apiKey = NA) +} +\arguments{ +\item{nameVector}{A vector containing one or more names to look up.} + +\item{countryCode}{An optional ISO 3166-1 alpha-2 country code.} + +\item{languageCode}{An optional ISO 639-1 language code. Only one of +countryCode or languageCode can be specified.} + +\item{apiKey}{An optional API key for genderize.io.} +} +\description{ +This function actually implements the genderize.io API. Can only query 10 +names at a time. +} +\keyword{internal} +