Функция gender()
(из гендерного пакета) возвращает фрейм данных, но пропускает строки с именами, которые она не распознает, что приводит к несоответствию в числовом значении.
Решением вашей проблемы было бы написание функции, которая принимает одно имя и возвращает пол, если оно распознано и «неизвестно» в противном случае. Новый столбец, содержащий информацию о полу, теперь можно добавить к исходным данным, применив новую функцию к столбцу creator_name строка за строкой (поэтому функции передается только одно имя за раз):
library(gender)
library(dplyr)
campaigns_tidy <- data.frame(creator_firstname = c("Peter","Hannah","Nonsense"),
stringsAsFactors = F)
get_gender <- function(name) {
gender_df <- gender(name, method = c("ssa"))
ifelse(nrow(gender_df) == 1, gender_df$gender, "unknown")
}
campaigns_tidy %>%
rowwise() %>%
mutate(creator_gender = get_gender(creator_firstname))