2010-12-07 20 views
2

Voici un exemple ensemble de données:Est-il possible de convertir une chaîne de mots en un acronyme dans R et de le concaténer avec des données d'autres lignes?

data <- data.frame (author = c('bob', 'john', 'james'), 
        year = c(2000, 1942, 1765), 
        title = c('test title one two three', 
           'another test title four five', 
           'third example title')) 

Et je voudrais automatiser le processus de fabrication des références BibTeX, par exemple avec une fonction comme ceci:

bibtexify <- function (author, year, title) { 
     acronym <- convert.to.acronym(title) 
     paste(author, year, acronym, sep='') 
     } 

pour que j'obtenir le résultat suivant:

with(data, bibtexify(author, year, title)) 
[1] 'bob2000tto' 
[2] 'john1942att' 
[3] 'james1765tet' 

Est-il possible de le faire en R?

Merci!

Répondre

6

vous voulez abbreviate

R> abbreviate('test title one two three') 
test title one two three 
      "ttott" 
4

Voici une possibilité que vous pourriez construire à partir de:

title <- c('test title one two three', 
           'another test title four five', 
           'third example title') 
library(gsubfn) 
sapply(strapply(title, "([a-zA-Z])[a-zA-Z]*"), function(x) paste(x[1:3], collapse='')) 

Cela suppose qu'il ya au moins 3 mots dans chaque titre, devra être fixé si ce n'est pas le cas.

+0

très agréable. Merci de m'avoir montré ce truc! –