yet another attempt,

colours <- as.character(paste(letters,colours(),"stuff",LETTERS))
target <- c("red","blue","green","gray")

matches <- melt(sapply(target, grep, x=colours))
colours[matches$value] <- matches$L1


(probably a worse idea than a straight for loop, though)

baptiste



On 28 Mar 2009, at 17:08, Stephan Kolassa wrote:

Hi Simeon,

I played around a little with Vectorize and mapply, but I couldn't make
it work :-( So, my best guess would be a simple loop like this:

result <- as.character(paste(letters,colours(),"stuff",LETTERS))
target <- c("red","blue","green","gray")
for ( new.color in target ) { result[grep(new.color,result)] <- new.color }

Best of luck,
Stephan


simeon duckworth schrieb:
stephan

sorry for not being clear - but thats exactly what i want.

i'd like to replace every complex string that contains "red" with just
"red", and then so on with "blue", "yellow" etc

my data is of the form

"xxxxx xx xx xxxxx  red xx xxx xx"
"xx xxx xxx xx  blue xx xx xx xx x"
"x xx xxxxxxxx xx xx xx xxxx red"
"red xx xx xx xx xx"
"xx xx xx xx xx xx"
"xx x x x x xxxx"

which i'd like to replace with
"red"
"blue"
"red"
"other"
"other"

thanks


On Sat, Mar 28, 2009 at 2:38 PM, Stephan Kolassa <stephan.kola...@gmx.de >wrote:

Hi Simeon,

I'm slightly unclear on what exactly you are trying to achieve... Are you trying to replace every entry of colours which *contains* "red" by "red",
dropping the rest of the entry? And same with "blue"?

A short example "before & after" would be helpful...

Best,
Stephan


simeon duckworth schrieb:

thanks stephan. i'd been trying to make gsub work, but couldnt make it
replace the whole expression. so i'd resorted to trying to loop with grep
-
but with two problems. firstly, i cant seem to make the loop 'remember' the substitutions it makes (see below). secondly, it feels like this is a
really inefficient way of doing something quite simple anyhow.

colours <- as.character(paste(letters,colours(),"stuff",LETTERS))
target <- c("red","blue","green","gray")
new.colour <-colours
for (i in length(target)) {
  x <- target[i]
  new.colour[grep((x),new.colour)] <- x
  return(new.colour)
  }




On Sat, Mar 28, 2009 at 9:45 AM, Stephan Kolassa <stephan.kola...@gmx.de
wrote:
Hi Simeon,
?gsub

HTH,
Stephan

simeon duckworth schrieb:

I am trying to simplify a text variable by matching and replacing it
with
a
string in another vector

so for example in
colours <- paste(letters,colours(),"stuff",LETTERS)

find and replace with ("red","blue","green","gray","yellow","other") -
irrespective of case

its a large dataset, so i'd like to be able to do this as efficiently as
possible.

thanks for any help

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





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

_____________________________

Baptiste AuguiƩ

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

______________________________________________
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