У меня есть функция, похожая на эту:
is_nickname = function(first_name1, first_name2, nicknames){
first_name1_dict_vals <- nicknames[which(nicknames$name == first_name1), ]
first_name2_dict_vals <- nicknames[which(nicknames$name == first_name2), ]
if (rowSums(first_name2 == first_name1_dict_vals) > 0 ) {
return(1)
} else if (rowSums(first_name1 == first_name2_dict_vals) > 0 ){
return (1)
} else {
return(0)
}
}
, которая возвращает 1, если одно из имен совпадает с псевдонимом другого, и 0 в противном случае. Это работает при указании имен как таковых:
is_nickname('will','bill',nicknames)
однако я хотел бы вместо этого передать имена столбцов из фрейма данных. скажем, проверьте $ first_name1 и $ first_name2, которые просто содержат строки для имен в моем наборе данных.
Как бы вы переписали функцию для вывода вектора, соответствующего именам? Я бы вставил этот вектор обратно в фрейм данных 'check' в виде нового столбца с 1 и 0. Спасибо
edit: в фрейме данных псевдонимов есть столбец 'names' и столбцы рядом с ним для соответствующих псевдонимов, который отделен от контрольного фрейма данных.
name<-c('john','bob','sarah','joe')
mm1<-c('jon','rob',NA,'joseph')
mm2<-c('jono','robert',NA,NA)
nicknames_head<-data.frame(name,mm1,mm2)
a1<-c('data','data','data','data')
a2<-c('data','data','data','data')
first_nm1<-c('jon','harry','bob','joe')
first_nm2<-c('john','harry','robert','cain')
is_nickname_should_look_like<-c(1,1,1,0)
check_head<-data.frame(a1,a2,first_nm1, first_nm2,is_nickname_should_look_like)