sp_list<- "common birdwing, troides helena; golden birdwing, TROIDES AECUS; Malayan birdwing, Troides Amphrysus; mountain birdwing, troides cuneifera" names<-unlist(strsplit(sp_list,";")) #names newnames<-NULL for(i in 1:length(names)){ common_name<-unlist(strsplit(names[i],","))[1] scientific_name<-tolower(unlist(strsplit(names[i],","))[2]) temp<-unlist(strsplit(scientific_name,"")) First_lett_of_genus<-grep("[[:lower:]]",temp)[1] temp[First_lett_of_genus]<-toupper(temp[First_lett_of_genus]) recompose_name<-paste(temp,collapse="") newname<-paste(common_name,", ",trimws(recompose_name,"l"),sep="") ifelse(i==length(names),txt<-"",txt<-";") newnames<-paste(newnames,newname,txt,sep="",collapse="") } newnames # [1] "common birdwing, Troides helena; golden birdwing, Troides aecus; Malayan birdwing, Troides amphrysus; mountain birdwing, Troides cuneifera"