Thank you Sarah,

Your reply was very helpful. I have the added difficulty that I am not only
dealing with single A-Z characters, but quite often have the following
situation:

form<-c('~Sentence+LEGAL+Intro+Intro/Intro1+Intro*LEGAL+benefit+benefit/benefit1+product+action+mean+CTA*help')

and again, I need to remove the +'CTA*help' part of the character string.
However, in another instance I may have

form<-c('~Sentence*LEGAL+Intro+Intro/Intro1+Intro*LEGAL+benefit+benefit/benefit1+product+action+mean+CTA*help')


In this case I would need to remove 'Sentence*LEGAL+' from form.


Can this be accomplished in the same manner?

Many thanks, once again, for your help

Mike Griffiths



On Mon, Nov 14, 2011 at 12:09 PM, Sarah Goslee <sarah.gos...@gmail.com>wrote:

> Hi,
>
> On Mon, Nov 14, 2011 at 4:20 AM, Michael Griffiths
> <griffi...@upstreamsystems.com> wrote:
> > Good morning R list,
> >
> > My apologies if this has *already* answered elsewhere, but I have not
> found
> > the answer that I am looking for.
> >
> > I have a character string, i.e.
> >
> >
> > form<-c('~ A + B + C + C / D + E + E / F + G + H + I + J + K + L * M')
> >
> > Now, my aim is to find the position of all those instances of '*' and to
> > remove said '*'. However, I would also like to remove the preceding
> > variable name before the '*', the math operator preceding this, and also
> > the variable name after the '*'. So, here I would like to remove '+L*M'
>
> You just want to get rid of them? gsub() it is.
>
> I've changed your formula a little bit to better demonstrate what's going
> on:
> > form<-c('~ A + B * C + C / D + E + E / F * G + H + I + J + K + L * M')
> > gsub(" \\+ [A-Z] \\* [A-Z]", "", form)
> [1] "~ A + C / D + E + E / F * G + H + I + J + K"
>
> That regular expression will take out a
> space
> +
> any capital letter
> space
> *
> space
> any capital letter.
>
> It will take out all occurrences of that sequence, but won't take out
> occurrences of * not in that sequence.
>
> If you don't want the spaces, you don't need them. Just take them out
> of the regular expression as well.
>
> Not that strsplit() was remotely the right tool here, but you can
> split into characters without a separator:
> > form <- 'abcd'
> > strsplit(form, '')
> [[1]]
> [1] "a" "b" "c" "d"
>
> Sarah
>
> > So, far I have come up with the following code:
> >
> > parts<-strsplit(form,' ')
> > index<-which(unlist(parts)=="*")
> > for (i in 1:length(index)){
> >    parts[[1]][index[i]]<-list(NULL)
> >    parts[[1]][index[i]+1]<-list(NULL)
> >    parts[[1]][index[i]-1]<-list(NULL)
> >    parts[[1]][index[i]-2]<-list(NULL)
> > }
> > new.form<-unlist(parts)
> >
> > form<-new.form[0]
> > for (i in 1: length(new.form)){
> >    form<-paste(form,new.form[i], sep="")
> > }
> >
> > However, as you can see, I have had to use strsplit in, what I consider a
> > rather clumsy manner, as the character string (form) has to be in a
> certain
> > format. All variables and maths operators require a space between them in
> > order for strsplit to work in the manner I require.
> >
> > I would very much like to accomplish what the above code already does,
> but
> > without the need for the initial character string having the need for the
> > aforementioned spaces.
> >
> > If the list can offer help, I would be most appreciative.
> >
> > Yours
> >
> > Mike Griffiths
> >
> >
> >
> --
> Sarah Goslee
> http://www.functionaldiversity.org
>



-- 

*Michael Griffiths, Ph.D
*Statistician

*Upstream Systems*

8th Floor
Portland House
Bressenden Place
SW1E 5BH

<http://www.google.com/url?q=http%3A%2F%2Fwww.upstreamsystems.com%2F&sa=D&sntz=1&usg=AFrqEzfKYfaAalqvahwrpywpJDL9DxUmWw>

Tel   +44 (0) 20 7869 5147
Fax  +44 207 290 1321
Mob +44 789 4944 145

www.upstreamsystems.com<http://www.google.com/url?q=http%3A%2F%2Fwww.upstreamsystems.com%2F&sa=D&sntz=1&usg=AFrqEzfKYfaAalqvahwrpywpJDL9DxUmWw>

*griffi...@upstreamsystems.com <einst...@upstreamsystems.com>*

<http://www.upstreamsystems.com/>

        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to