You can use Mark's code by giving levels to the factor, e.g. as.numeric(factor(unlist(strsplit("ABCDAXYZ", "")), levels=LETTERS))
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Monday, November 24, 2008 9:15 AM To: [EMAIL PROTECTED] Cc: r-help@r-project.org Subject: Re: [R] Calculating sum of letter values Hi Mark Thanks, that's almost exactly what I need...theres just a slight difference with my requirement, in that I am looking for the actual index value in the alphabetical sequence, so that instead of: as.numeric(factor(unlist(strsplit("XYZ","")))) [1] 1 2 3 I would expect to see [1] 24 25 26 I have got it to work in a fairly non-elegant manner, using the following code: sum ( unlist(lapply(strsplit("TESTING",""), function(x) match(x,LETTERS) )) ) And over a list of names, this becomes: lapply(namelist, function(Z) { sum ( unlist(lapply(strsplit(Z,""), function(x) match(x,LETTERS) )) ) } ) But this is kind of ugly.... Rory Winston RBS Global Banking & Markets Office: +44 20 7085 4476 -----Original Message----- From: Marc Schwartz [mailto:[EMAIL PROTECTED] Sent: 24 November 2008 15:09 To: WINSTON, Rory, GBM Cc: r-help@r-project.org Subject: Re: [R] Calculating sum of letter values on 11/24/2008 08:57 AM [EMAIL PROTECTED] wrote: > Hi all > > If I have a string, say "ABCDA", and I want to convert this to the sum of the letter values, e.g. > > A -> 1 > B -> 2 > > etc, so "ABCDA" = 1+2+3+4+1 = 11 > > Is there an elegant way to do this? Trying something like > > which(LETTERS %in% unlist(strsplit("ABCDA", ""))) is not quite > correct, as it does not count repeated characters. I guess what I need is some kind of lookup table? > > Cheers > Rory > sum(as.numeric(factor(unlist(strsplit("ABCDA", ""))))) [1] 11 Convert the letters to factors, after splitting the vector, which then enables the use of the underlying numeric codes: > as.numeric(factor(unlist(strsplit("ABCDA", "")))) [1] 1 2 3 4 1 HTH, Marc Schwartz ************************************************************************ *********** The Royal Bank of Scotland plc. Registered in Scotland No 90312. Registered Office: 36 St Andrew Square, Edinburgh EH2 2YB. Authorised and regulated by the Financial Services Authority This e-mail message is confidential and for use by\ the=...{{dropped:10}} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.